有没有办法通过AuditQuery识别哪些属性已被修改?

时间:2015-03-30 22:11:01

标签: java hibernate spring-mvc hibernate-envers

我有一个名为Contact的对象,我将每个属性标记为@Audited。保存更改按预期工作。我可以看到数据库中的所有数据和更改。我想要做的是访问更改。我想获取一个特定Contact的所有更改,我想查看每个日志更改的属性。这是我到目前为止的地方。

AuditReader reader = AuditReaderFactory.get(entityManager);
AuditQuery query = reader.createQuery().forRevisionsOfEntity(Contact.class, false, true);
query.add(AuditEntity.id().eq(contactId));
List<Object[]> contacts = query.getResultList();

现在返回的对象列表是我想要的数据列表,但是我不知道如何识别每个结果中哪些属性已更改。是否有一种不同/更好的方法可以让我看到哪些属性被修改了?还是其他人对如何做到这一点有不同的想法?

提前致谢!

1 个答案:

答案 0 :(得分:0)

Envers中没有内置的差异功能,因此您可以手动比较两个后续版本,也可以添加其他列(标志),如果列值发生变化,它们将保存信息;请参阅手册:http://docs.jboss.org/hibernate/core/4.3/devguide/en-US/html/ch15.html#envers-tracking-properties-changes