Найти грязные поля вложенного объекта в объекте - PullRequest
0 голосов
/ 10 апреля 2019

Hibernate предоставляет два альтернативных пути для обнаружения измененных / грязных полей объекта, либо до, либо после его обновления, через перехватчик или прослушиватель.

Мы следовали второму подходу, реализовав PostUpdateEventListener и получив грязные свойства объекта (в виде индексов), переопределив void onPostUpdate (заключительное событие PostUpdateEvent). После объединения их с именами свойств объекта мы получили грязные имена свойств объекта.

Проблема возникает, когда у сущности есть грязные свойства @Embedded, то есть встраиваемые объекты. Вызов event.getDirtyProperties () возвращает только индекс, обозначающий встраиваемый объект сущности (т.е. ProjectInformation projectInformation).

Кажется, что нет способа получить точное свойство (грязное) встраиваемого объекта (то есть String projectName).

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

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