2013-02-12 10 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» для перебора всех свойств и сравнения их значений. Нехорошо, но сейчас это работает. :-) –