Hibernate Envers - получить поля, которые изменились

У меня довольно сложная структура БД, которую я пытаюсь проверить. В настоящее время у меня работает Envers, и он проверяет изменения, внесенные в каждый объект. Это действительно хорошо работает!

Теперь я хочу показать некоторую аудиторскую информацию о пользовательском интерфейсе. Объекты / таблицы становятся довольно сложными, поэтому я искал способ увидеть, какие поля были изменены в ходе аудита. В настоящее время Envers хранит снимок каждого объекта с идентификатором редакции. Я могу просмотреть версию каждого объекта, а затем вручную запросить, что изменилось, но мне было интересно, есть ли способ заставить Envers сохранить, какие поля были изменены. Это возможно? Я нашел эту ссылку от 2011 года, и она рекомендует проверять каждое поле объекта вручную. Меня здесь беспокоит скорость. У меня много связанных объектов, и у меня может быть только одно обновленное поле. Мне придется запросить множество полей, чтобы найти то, что изменилось.

Можно ли сохранить измененные поля?

Спасибо

ИЗМЕНИТЬ

Я должен был сказать, что использую таблицу REVCHANGES, чтобы видеть, что изменилось в каких версиях, но опять же, это только на уровне объекта, а не на уровне поля.


person RNJ    schedule 02.01.2013    source источник
comment
+1 для этого - в настоящее время мы используем старый прослушиватель onPostUpdate для выполнения сравнения и записи разницы в таблицу при выполнении обновлений. В идеале запросы Envers должны сказать нам: 1. Что изменилось, и за дополнительную плату: 2. Что изменилось с и на   -  person ndtreviv    schedule 12.02.2013


Ответы (1)


В более новых версиях Envers вы можете отслеживать, какие свойства изменялись в каждой ревизии, используя логический флаг. Видеть:

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

person adamw    schedule 07.01.2013
comment
Проблема в том, что, насколько я могу судить, нет возможности программно проверить эту информацию. Вы можете использовать его только в аудиторских запросах. Это помогает ограничить количество вносимых вами исправлений, но совершенно не помогает разумно отображать журнал того, что произошло. Если я правильно понимаю исходный плакат и для моей собственной проблемы, мне нужен способ доступа к этим флагам ПОСЛЕ загрузки редакций, чтобы я мог разумно показать пользователю, что изменилось. В противном случае журнал будет бесполезен, потому что нужно много времени, чтобы выяснить, что изменилось. - person user3402489; 05.05.2015