首页 文章

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

提问于
浏览
1

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

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

1 回答

  • 3

    为了它现在的 Value . 我有同样的问题,并能够通过使用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 .

相关问题