2010-05-11 5 views
2

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

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

Walter

ответ

1

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

@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, чем это, скорее всего, аргументы и имя метода.

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

  • Нет связанных вопросов^_^