[英]Hibernate Envers - How to audit changes in an entity that is in a @OneToMany relationship?
可以说我有两个实体,A和B。A与B有一个@OneToMany关系,并且我已经审计了B中的所有属性。当我使用Envers获取修订时,我得到的只是A和B之间的关系更改。但是我还需要获取B属性的更改。 有没有办法做到这一点?
提前致谢!
我正在研究以下映射的假定:
@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
,这都会触发与EntityA
以及由于该关系而添加/删除的关联EntityB
关联的修订更改。
但是,如果您决定要修改EntityB
某些对EntityB
没有直接影响的EntityA
,则只会为EntityB
而不是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
实际上需要通过AuditReader
接口专门查询EntityB
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.