Как создать настраиваемое поле при использовании спящих Hibernate
Я начинаю новый проект с использованием Spring 3.1, Hibernate 4, и есть требование, чтобы отслеживать любую активность в приложении. пример отслеживания активности who changed what?
from what to what?
а также at which time?
Я прочитал вводный урок по спячке anvers. и мне кажется, что это больше история данных, чем отслеживание активности, если я не получил ее вообще.
Есть ли способ добавить настраиваемое поле в эту таблицу *_aud для вставки более определенной пользователем таблицы. лайк date_created
, last_modified
, created_by
, updated_by
со своим databefore
а также dataafter
вроде полей. так что в основном я хотел бы добавить createdby
, updatedby
чтобы созданная таблица
Есть ли способ сделать это. если да, пожалуйста, укажите мне правильный ресурс.
Спасибо за прочтение.
1 ответ
В Envers каждая "производственная" таблица имеет соответствующую таблицу *_AUD, в которой хранится историческое состояние объектов. Существует также глобальный REVINFO (org.hibernate.envers.DefaultRevisionEntity
) таблица, которая содержит номер редакции, метку времени и пользовательские столбцы, определенные пользователем. Пример, показывающий, как расширить DefaultRevisionEntity, можно найти в документации. В настоящее время нет возможности настроить таблицы *_AUD, однако Envers должен ответить на все вопросы, которые вы задали.
- кто что изменил? - Храните учетные данные пользователя в таблице REVINFO.
- с чего на что? - Это довольно общий вопрос:). Попробуйте исследовать
org.hibernate.envers.AuditReader
а такжеorg.hibernate.envers.query.AuditQueryCreator
, - в какое время? - Метка времени хранится в таблице REVINFO. Эта временная метка отражает время, когда пользователь внес свои изменения.