3

我正在使用 Hibernate envers 3.6.3.Final。我可以审计表,我可以看到_audit表中填充了revision_number,revision_type和实体数据。我正在创建一个历史页面,我想在其中显示所有修订条目,以便当用户单击修订 ID 时,我可以显示实体数据以及修订类型,即添加、删除或修改。我正在尝试使用AuditQuery,但我不确定如何获取revision_type给定修订版和给定实体类的信息。有可能在AuditQuery吗?

我可以通过编写 Hibernate 查询来获取“RevisionType”信息。但我想为此重用任何现有的框架 api。以另一种方式,我将不同的“RevisionType”作为条件传递给AuditQuery (即删除、插入和更新的多个查询)并检查是否得到任何结果,但这不是有效的方法。

4

1 回答 1

4

对于现在的价值。我遇到了同样的问题,并且能够通过使用AuditQueryCreator#forRevisionsOfEntity方法来获取修订类型,如下所示:

List<Object[]> resultList = auditReader.createQuery()
    .forRevisionsOfEntity(entityClass, entityClass.getName(), false, true)
    .add(AuditEntity.revisionNumber().eq(revision)).getResultList();

这将返回有关指定修订的数组三元组更改列表。数组三元组包含实体、实体信息以及最后的修订类型。

确保将AuditQueryCreator#forRevisionsOfEntity的selectEntitiesOnly参数设置为false。如果设置为 true,该方法将仅返回实体对象列表。

这里使用 Hibernate Envers 版本 4.2.2。

于 2013-10-01T07:57:21.477 回答