Hibernate Envers - 如何审核处于@OneToMany关系的实体中的更改?

时间:2016-06-22 23:15:42

标签: java hibernate hibernate-envers

假设我有两个实体,A和B. A与B的@OneToMany关系,我已经审计了B中的所有属性。当我使用Envers获取修订时,我得到的是关系之间的变化A和B但我还需要获得B&#39的属性的变化。有没有办法解决这个问题?

提前致谢!

1 个答案:

答案 0 :(得分:1)

我正在推算以下映射:

@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添加/删除EntityA时,都会触发与EntityA相关的修订更改以及已添加/删除的相关EntityB关系。

但是,如果您决定要修改EntityBEntityA没有直接影响的某些属性,则只会为EntityB生成修订而不是{{1} },见下文。

EntityA

如果您在这种情况下需要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(); 的个别修订版,则需要通过EntityB界面实际专门查询EntityB