Hibernate Envers:如何获取给定修订版和给定实体类的revision_type信息

时间:2012-09-07 12:34:33

标签: hibernate hibernate-envers

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

我可以通过编写Hibernate查询来获取'RevisionType'信息。但我想重用任何现有的框架api。换句话说,我将不同的'RevisionType'作为标准传递给AuditQuery(即DELETE,INSERT和UPDATE的多个查询)并检查我是否得到任何结果,但这不是有效的方法。

1 个答案:

答案 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。