2017-06-14 142 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)

這應該工作的方式你需要。希望有所幫助。