Envers с перехватчиками Hibernate, onDelete - PullRequest
2 голосов
/ 04 октября 2011

Я пытаюсь реализовать простой подход на основе перехватчиков Envers + для аудита моих объектов Hibernate.Для этого, в соответствии с типичным подходом, есть BaseEntity со всеми свойствами аудита:

BaseEntity{
    createdOn;
    createdBy;
    updatedOn;
    updatedBy;
}

В AuditInterceptor я переопределил onFlushDirty и onSave методы для манипулирования вышеупомянутымсвойства в зависимости от того, является ли объект Сохранить или Обновить.Все работает, как и ожидалось, для сохранения и обновления.

Проблема, с которой я сталкиваюсь: мне нужен способ, чтобы иметь возможность манипулировать вышеуказанными свойствами для операций удаления.Переопределение onDelete дает мне указатель на массив state[], но его изменение не отражается в таблицах _AUD (аудит).В двух словах: я хочу иметь возможность аудита операций удаления в таблицах аудита.

Есть ли обходной путь для этого или я что-то упустил?

1 Ответ

1 голос
/ 04 октября 2011

Не думаю, что вам нужно реализовывать методы onSave, onFlushDirty.

Вам просто нужно реализовать интерфейс RevisionListener. Если вы следуете здесь шаблону, вам не нужно добавлять эти свойства (созданный и т. Д.) К вашим сущностям (если только они вам не нужны для обычных операций).

Подробнее см. http://docs.jboss.org/hibernate/envers/3.6/reference/en-US/html_single/#revisionlog. В приведенном здесь примере они используют Seam, чтобы получить зарегистрированного пользователя.

Envers позволяет вам отделить аудит от ваших сущностей, что обеспечивает чистоту вашей обычной модели и сводит к минимуму код, необходимый для аудита.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...