Получение измененных свойств по ревизии

Я использую 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);

было бы неплохо иметь - но, может быть, я слишком глуп, чтобы найти такую ​​​​функцию.


person Dominik Sandjaja    schedule 12.02.2013    source источник


Ответы (1)


В настоящее время можно запрашивать объекты только с измененным свойством, см. http://docs.jboss.org/hibernate/core/4.1/devguide/en-US/html/ch15.html#envers-envers-tracking-properties-changes-queries.

Получить дескриптор (changeset) того, какие свойства изменились, пока невозможно.

person adamw    schedule 13.02.2013
comment
Спасибо, я видел эту опцию запроса, просто не был уверен, что список измененных свойств просто не упоминается в документации или он действительно отсутствует. Теперь я знаю, что это последнее ;-) В качестве обходного пути я извлекаю старую версию и новую версию и использую BeanUtils и PropertyUtils для перебора всех свойств и сравнения их значений. Нехорошо, но пока работает. :-) - person Dominik Sandjaja; 14.02.2013