休眠更新特定实体领域
问题描述:
这里是实体模型,我想保存(创建/更新):休眠更新特定实体领域
@Entity
@Table(name = "EVENT")
public class EventEntity {
@Column(name = "NATURE")
private String nature;
@Column(name = "END_DATE")
private LocalDate endDate;
@Column(name = "NOTIFIED", insertable = false)
@NotNull
private Boolean notified;
// Getter - Setter - Builder
}
有两种方法来更新这个实体:
- 第一个更新除了
notified
所有属性属性 - 第二个更新
notified
属性唯一
有没有办法让Hibernate忽略特定方法的某些字段? 我是否需要创建两种不同的特定dao方法? 我是否需要为方法保留updatable=false
方法并创建一个自定义更新notified
属性的方法?最佳实践?
答
我建议你分开做。
对于第一次更新(所有领域,但通知)我的确会使用
updatable = false
它告诉Hibernate不包括在SQL语句中的字段。这样你只需要调用tha save()方法。-
对于第二次更新(只有通知场),创建自定义查询:
@Modifying @Query("UPDATE EventEntity e SET e.notified = ?2 WHERE e.id = ?1") @Transactional void customUpdate(UUID itemId, boolean notified);
(假设条件是ID)
这应该工作的方式你需要。希望有所帮助。