使用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,我认为这有点重--我不想那样。如何获得不同的修订集合(日期、修订编号)?
发布于 2014-08-28 13:40:22
我认为您要寻找的是AuditQuery上的AuditQuery方法。您可以在修订编号和日期上添加投影。
发布于 2014-09-01 22:55:13
根据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]:修订本编号为intObject[1]:java.util.Date的修订日期,对应的created revisionPropertyhttps://stackoverflow.com/questions/25542231
复制相似问题