Java Hibernate Envers-如何审核处于@OneToMany关系中的实体中的更改?
假设我有两个实体,A和B。A与B有@OneToMany关系,我审核了B中的所有属性。当我使用Envers获得修订时,我得到的只是A和B之间关系的更改,但我还需要获得B属性的更改。有办法做到这一点吗Java Hibernate Envers-如何审核处于@OneToMany关系中的实体中的更改?,java,hibernate,hibernate-envers,Java,Hibernate,Hibernate Envers,假设我有两个实体,A和B。A与B有@OneToMany关系,我审核了B中的所有属性。当我使用Envers获得修订时,我得到的只是A和B之间关系的更改,但我还需要获得B属性的更改。有办法做到这一点吗 提前谢谢 我正在对以下映射进行假设: @Entity @Audited public class EntityA { /* other properties & getters/setters */ @OneToMany(mappedBy = "a", cascade = Ca
提前谢谢 我正在对以下映射进行假设:
@Entity
@Audited
public class EntityA {
/* other properties & getters/setters */
@OneToMany(mappedBy = "a", cascade = CascadeType.ALL)
private List<EntityB> bList;
}
@Entity
@Audited
public class EntityB {
/* other properties & getters/setters */
@ManyToOne
private EntityA a;
}
在这种情况下,如果需要
EntityB
的单独修订,实际上,您需要通过AuditReader
界面专门查询EntityB
。您是在使用org.hibernate.envers.global\u with_modified\u标志
还是在关系的@Audited
注释上设置modifiedFlags=true
?标签放在哪里?在关系上或在实体B的财产中实体B标记为@auditable?是的,实体B标记为@Audited。您如何修改实体A和实体B?如果你能用你的实体映射更新你的帖子,那也会很有帮助。谢谢,这就是我所说的,我会尝试一下,让你知道。
entityManager.getTransaction().begin();
final EntityA a = entityManager.find( EntityA.class, aId );
for ( EntityB b : a.getbList() ) {
b.setName( b.getName() + "-modified" );
}
entityManager.merge( a );
entityManager.getTransaction().commit();