2017-06-14 144 views
3

这里是实体模型,我想保存(创建/更新):休眠更新特定实体领域

@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属性的方法?最佳实践?

回答

3

我建议你分开做。

  • 对于第一次更新(所有领域,但通知)我的确会使用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)

这应该工作的方式你需要。希望有所帮助。