Hibernate Envers获取标准修订 [英] Hibernate Envers get revisions for criteria

查看:121
本文介绍了Hibernate Envers获取标准修订的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用Hibernate Envers(4.1.9.Final)。尝试获取某个实体已经更改的特定类型的匹配特定标准的所有修订(日期,修订号)。

这是代码'm现在有:

  AuditReader auditReader = AuditReaderFactory.get(entityManager); 
AuditQuery query = auditReader.createQuery()
.forRevisionsOfEntity(InventoryItem.class,false,true)
.add(AuditEntity.property(section_uuid)。eq(sectionUuid))
.addOrder(AuditEntity.revisionNumber().desc());
List< Object []> revisions = query.getResultList();




  1. 这将为每个更改的 InventoryItem返回一个元素。因此,如果在修订版中更改了两个 InventoryItem ,我会得到两个元素 - 我不希望这样。

  2. 还有实际的 InventoryItem s,我认为这有点沉重 - 我不希望这样。

我怎样才能得到一个独特的版本集合(日期,修订版本号码)?

解决方案

您正在寻找的是 AuditQuery 上的 addProjection 方法。您可以在版本号和日期上添加投影。


Using Hibernate Envers (4.1.9.Final). Trying to get all the revisions (date, revision number) for which a entities have changed of a certain type and that match a certain criterion.

This is the code that I'm currently having:

    AuditReader auditReader = AuditReaderFactory.get(entityManager);
    AuditQuery query = auditReader.createQuery()
            .forRevisionsOfEntity(InventoryItem.class, false, true)
            .add(AuditEntity.property("section_uuid").eq(sectionUuid))
            .addOrder(AuditEntity.revisionNumber().desc());
    List<Object[]> revisions = query.getResultList();

  1. This returns one element for each changed InventoryItem. So, if two InventoryItems were changed in a revision, I get two elements -- I do not want that.
  2. This returns also the actual InventoryItems, I think that's a bit heavy -- I do not want that.

How can I get a distinct collection of revisions (date, revision number)?

解决方案

I think what you are looking for is the addProjection method on AuditQuery. You can add a projection on the revision number and date.

这篇关于Hibernate Envers获取标准修订的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆