繁体   English   中英

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

[英]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;
}

EntityBEntityA添加/删除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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM