【问题标题】:Hibernate update specific entity fieldHibernate 更新特定实体字段
【发布时间】:2017-06-14 07:01:59
【问题描述】:

这是我要保存(创建/更新)的实体模型:

@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 方法吗? 我是否需要为经典的save 方法保留updatable=false 并创建一个自定义方法来仅更新notified 属性?最佳做法?

【问题讨论】:

    标签: java hibernate spring-data-jpa


    【解决方案1】:

    我建议你分开做。

    • 对于第一次更新(除了 notified 之外的所有字段),我确实会使用 updatable = false,它告诉 hibernate 不要在 SQL 语句中包含该字段。这样你只需要调用 tha save() 方法。

    • 对于第二次更新(仅 notified 字段),进行自定义查询:

      @Modifying
      @Query("UPDATE EventEntity e SET e.notified = ?2 WHERE e.id = ?1")
      @Transactional
      void customUpdate(UUID itemId, boolean notified);
      

      (假设条件是一个ID)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-15
      • 2016-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多