当前位置: 首页 > 面试题库 >

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

龙嘉玉
2023-03-14
问题内容

我有两个经审计的实体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。


问题答案:

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

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



 类似资料:
  • 如何使用ArrayList检索Student类的单个属性,或者检查列表中是否存在“AAA ”?

  • 关于以下摘录,关于CQR和ddd,摘自Nick Tune,Scott Millett的领域驱动设计的模式、原则和实践 这是否意味着命令端的域模型可以省略大部分业务属性?对于例如客户实体,它会是什么样子? 客户实体能否省略名字、姓氏等?如果是这样,这些业务属性会在哪里?仅在CustomerEntity的读取模式中? 或者,除了包含所有业务属性的CustomerEntity之外,可能还会有Custom

  • 问题内容: 这是我的情况,我有两个基本的POJO,并给出了一个简单的hibernate映射: 我的SQL查询返回的行看起来像这样: 我的hibernate查询如下所示: 这是每个部分的内容:Hibernate文档的18.1.3:http : //docs.jboss.org/hibernate/core/3.6/reference/zh- CN/html/querysql.html#d0e1746

  • 我有两个遗留实体 和由。我有一个CriteriaAPI查询,它返回所有者集合,我需要按。 因为我不能将子查询放到,也不能更改这些实体的JPA映射,所以对我来说似乎并不容易。 请给任何想法。

  • 我通常使用JPQL查询数据库,但今天我不得不使用原生查询,因为性能原因和JPQL中没有的特性(联接子查询)。使用JPQL,可以使用join fetch来检索父实体及其子实体集合。然而,当我尝试使用本机查询时,对于每个父实体,将返回多行,每行包含父实体及其子实体之一的数据。然后返回的列表包含父级的重复对象。假设一个父级有两个子级,那么下面的查询将在列表中返回2个父级,而不是1个。 任何人都知道如何避

  • 问题内容: 这是我的情况,我有两个基本的POJO,并给出了一个简单的休眠映射: 我的SQL查询返回的行看起来像这样: 我的休眠查询如下所示: 这是每个部分的内容:Hibernate文档的18.1.3:http : //docs.jboss.org/hibernate/core/3.6/reference/zh- CN/html/querysql.html#d0e17464 我希望在清单中得到的是2