2016-06-07 3 views
1

Ниже Структура таблицы:Как создать журнал журнала аудита в спящем режиме?

id | createdby | createddate | tablename | columnname | primaryid | oldavalue | newvalue | remarks 

мы получаем разделители файл, в котором есть некоторые значения для обновления в 4-х таблицах. В четырех таблицах по 10 столбцов. Мы не знаем, что обновить. Таким образом, мы просто обновляем целую строку по одному первичному идентификатору.

Сейчас Проблемы здесь:

  1. Как получить таблицу Имя, Имя столбца в Hibernate?

  2. Как получить старую стоимость; во время обновления? Как узнать, какое поле мы обновляем, имеет старое значение, и теперь мы вставляем новое значение? (Еще не поделились полями)

+0

Возможно, вы можете создать таблицу истории (копию существующих таблиц) и сохранить старую запись в этой таблице, а затем сравнить записи с новыми добавленными данными в своих основных таблицах. Вы можете использовать Spring AOP для автоматизации процесса. Можете ли вы более четко понять, когда вам нужно сравнивать ценности? и вам нужен SQL-запрос для сравнения или весеннего решения. \ –

+0

Проверить [Hibernate Envers - Easy Entity Auditing] (http://docs.jboss.org/envers/docs/) –

ответ

3

Вы можете реализовать EmptyInterceptor of Hibernate. В методах EmptyInterceptor вы можете найти имя поля, предыдущее значение и текущее значение.

+0

Не могли бы вы также привести пример для этого? – fatherazrael

+0

Вы можете сослаться на этот http://www.mkyong.com/hibernate/hibernate-interceptor-example-audit-log/ или выполнить поиск в google. Есть много примеров, доступных на EmptyIntercetor – nitika

+0

привет @fatherazrael, я думаю, что спящий режим также полезен для тебя. Вот пример https://newcircle.com/s/post/115/easy_auditing_versioning_for_your_hibernate_entities_with_envers – nitika

0

Вы также можете использовать Spring AOP, написав весенний аспект до и после выполнения операции, которая будет вставлять данные в таблицы аудита

+0

Не могли бы вы также привести пример для этого? – fatherazrael

1

Мой любимый инструмент для этого Hibernate Envers. Вы просто комментируете свои объекты как @Audited, а envers заботится о перехватчиках.

Смежные вопросы