一尘不染

Hibernate Envers:使用集合属性检索实体的正确修订版

hibernate

我有两个经审计的实体A和B。实体A拥有实体B的集合(注释为一对多关系)。将A的新实例插入数据库时​​,A和B的所有行都处于同一修订版(假设修订版1)。然后,对A进行了更新,仅影响实体B的实例。因此,更新后,实体A仍处于修订版1,而实体B处于修订版2(包括审核表中的MOD条目)
。在修订版3中,实体A被删除。因为实体B的集合用@Cascade注释,所以属于A的实体B也被删除。

在这种情况下,如何使用Envers创建审核查询,以获取具有修订版2的更新的实体B的实体A的实例?当查询实体A的所有修订版时,我要么获得A的已删除实体,而该实体不包含B的实体(修订版3),要么得到修订版1的A,它也拥有修订版1的B个实体。

如果有帮助,请使用Hibernate 3.6。


阅读 175

收藏
2020-06-20

共1个答案

一尘不染

如果您阅读修订版2中的实体A,您将获得正确的数据。

当前没有办法获得一个实体或相关实体已更改的修订列表(就像您的情况一样-修订2仅是B中的更改,而不是a中的更改)。

2020-06-20