查询特定属性中给定类的实体发生更改的修订

时间:2012-11-27 16:48:46

标签: hibernate hibernate-envers

在这里寻找Envers文档 http://docs.jboss.org/envers/docs/index.html#revisions-of-entity

我正在尝试查询更改特定对象属性的修订版(LIST!)。 在文档示例中,您有一个包含id,name,surname和address的人员类。

第5.2段显示如何找到满足某些最大化/最小化条件的特定修订。

我可以找到更改特定类实例的所有修订

auditReader.getRevisions(entityClass, entityName, id);

但这不是一个查询。

我正在尝试做类似的事情(给定entityClass,id和attributeName?):

auditReader.createQuery().forRevisionsOfEntity(entityClass, false, true)
.add(AuditEntity.id().eq(id))
.add(AuditEntity.property(attributeName).ne(AuditEntity.GETPREVIOUS?().property(attributeName)))

换句话说,正如hibernate envers文档,我正在使用一个id(=一个人)搜索所有人修订版,其中只更改了名称(地址可以在中间多次更改)。

我不知道如何直截了当地对查询进行限制,只查看对一个属性的更改,或者如何编写该属性与此对象的先前版本不同。

谢谢

弗朗西斯

1 个答案:

答案 0 :(得分:1)

要查询属性更改,您需要在审计实体中包含实体的部分或全部属性的属性更改标记。这是较新版本的Envers的一个功能,存在于Hibernate 4.1中。

查看文档: http://docs.jboss.org/hibernate/core/4.1/devguide/en-US/html/ch15.html#envers-envers-tracking-properties-changes-queries