查找实体中嵌入式对象的脏字段

时间:2019-04-10 15:54:19

标签: hibernate jpa embeddable

Hibernate提供了两个替代路径,可通过拦截器或侦听器在更新实体之前或之后检测实体的已更改/脏字段。

我们遵循第二种方法,实现了PostUpdateEventListener并通过覆盖void onPostUpdate(最终PostUpdateEvent事件)来获取实体的脏属性(作为索引)。将它们与实体的属性名称组合后,我们得到了实体的肮脏属性名称。

当实体具有脏的@Embedded属性(也称为可嵌入对象)时,就会出现问题。 event.getDirtyProperties()的调用仅返回表示实体可嵌入对象的索引(即ProjectInformation projectInformation)。

似乎没有办法获得可嵌入对象(即字符串projectName)的确切属性(脏对象)。

@Entity
public class Project {
   @Embedded
   private ProjectInformation projectInformation;
   ...
}

@Embeddable
public class ProjectInformation {
   @Column
   private String projectName;
   ...
}

0 个答案:

没有答案