使用Hibernate Envers(4.1.9.Final)。试图获得实体已更改某种类型且符合特定标准的所有修订版本(日期,修订号)。
这是我目前的代码:
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();
InventoryItem
返回一个元素。因此,如果在修订版中更改了两个InventoryItem
,我会得到两个元素 - 我不希望这样。InventoryItem
,我认为这有点重 - 我不希望这样。如何获得不同的修订集(日期,修订号)?
答案 0 :(得分:1)
根据Adam的回答,这是我实施的代码。我将他的答案标记为已接受的答案。
AuditReader auditReader = AuditReaderFactory.get(entityManager);
AuditQuery query = auditReader.createQuery()
.forRevisionsOfEntity(InventoryItem.class, false, true)
.addProjection(AuditEntity.revisionNumber().distinct())
.addProjection(AuditEntity.revisionProperty("created"))
.add(AuditEntity.property("section_uuid").eq(sectionUuid))
.addOrder(AuditEntity.revisionNumber().desc());
因此,query.getResultList()
将返回Object[]
的集合,其中每个Object[]
包含:
Object[0]
:修订号为int
Object[1]
:修订日期为java.util.Date
,对应created
revisionProperty
答案 1 :(得分:0)
我认为您要找的是addProjection
上的AuditQuery
方法。您可以在修订号和日期上添加投影。