假设我有两个实体,A和B. A与B的@OneToMany关系,我已经审计了B中的所有属性。当我使用Envers获取修订时,我得到的是关系之间的变化A和B但我还需要获得B&#39的属性的变化。有没有办法解决这个问题?
提前致谢!
答案 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
关系。
但是,如果您决定要修改EntityB
对EntityA
没有直接影响的某些属性,则只会为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
。