2013-02-12 46 views
5

我正在使用Hibernate Envers来审计我的实体和属性(org.hibernate.envers.global_with_modified_flag=true)。这似乎工作,但现在我想要得到一个特定的实体,在给定的修订版相比,更改前的一个属性。作为奖励,将变更集从一个修订版转移到另一个修订版会很好。到目前为止,我只得到了修改实体:通过修订获取修改的属性

List<Object> modifiedClassesAtRevision = getAuditReader().getCrossTypeRevisionChangesReader().findEntities(revision, RevisionType.MOD) 
Object modifiedObject = modifiedClassesAtRevision.get(0); 

现在,因为我不希望创建Java中所有实体的比较方法,有没有什么办法让这个版本的修改的属性?东西沿线

List<String> modifiedProperties = getAuditReader().getModifiedProperties(modifiedObject, revision); 

会很高兴有 - 但也许我太愚蠢,找不到那种功能。

回答

3

目前只能查询属性被修改的实体,请参阅http://docs.jboss.org/hibernate/core/4.1/devguide/en-US/html/ch15.html#envers-envers-tracking-properties-changes-queries

获取其属性已更改的描述符(更改集)尚不可能。

+1

谢谢,我已经看到了查询选项,只是不确定是否更改属性的列表只是没有在文档中提及或者实际上是否丢失。现在我知道它是后者;-)作为解决方法,我获取旧版本和新版本,并使用BeanUtils和PropertyUtils遍历所有属性并比较它们的值。不好,但现在起作用。 :-) – 2013-02-13 20:45:28