我正在使用Hibernate envers 3.6.3.Final。我可以审计表,我可以看到_audit
表填充了revision_number
,revision_type
和实体数据。
我正在创建一个历史页面,我想在其中显示所有修订条目,以便当用户单击修订版ID时,我可以显示实体数据以及修订版本类型,即添加,删除或修改它。我正在尝试使用AuditQuery
,但我不确定如何获取给定修订版和给定实体类的revision_type
信息。可以在AuditQuery
中做到吗?
我可以通过编写Hibernate查询来获取'RevisionType'信息。但我想重用任何现有的框架api。换句话说,我将不同的'RevisionType'作为标准传递给AuditQuery
(即DELETE,INSERT和UPDATE的多个查询)并检查我是否得到任何结果,但这不是有效的方法。
答案 0 :(得分:3)
现在的价值。我遇到了同样的问题,并且能够通过使用 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。