Hibernate - Envers - Несколько целей аудита - PullRequest
2 голосов
/ 11 мая 2010

Я уже использую Hibernate Envers для аудита объектов, которые обновляются пользователем через пользовательский интерфейс; Тем не менее, у меня также есть асинхронные задания, работающие в фоновом режиме, и я хотел бы также проверить их с помощью Envers. Теперь для пользовательского интерфейса я отслеживаю, какое изменение внесено HttpRequest с указанием даты, пользователя, сеанса и т. Д. Для фоновых заданий я хотел бы отслеживать дату выполнения задания, а также точное задание, которое его изменило. (класс работы).

Можно ли настроить 2 объекта аудита, 1 для пользовательского интерфейса и 1 для системных изменений?

Walter

1 Ответ

1 голос
/ 24 мая 2010

Я еще не проверял это, но я просто делаю следующее:

@RevisionListener(SystemRevisionListener.class)
@Entity
public class SystemRevision extends AbstractRevision
{
   @Column(nullable = false, updatable = false)
   protected QuartzTriggerHandle job;

   @Column(nullable = false, updatable = false)
   protected Class jobClass;

   ...
}



@RevisionListener(WebRevisionListener.class)
@Entity
public class WebRevision extends AbstractRevision
{
   @ManyToOne(optional = false)
   @JoinColumn(nullable = false, updatable = false)
   protected HttpRequest httpRequest;

   ...
}

Затем в каждом слушателе я делаю все, что мне нужно, чтобы установить эти свойства. Теперь я должен быть в состоянии отследить, как изменился объект, изменился ли пользователь (и к какому запросу он привязан), или если объект изменил объект, какое задание отвечает за изменение. Я хотел бы хранить больше свойств в SystemRevision, чем это, скорее всего, аргументы и имя метода.

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