Вопрос

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

Можно ли настроить 2 аудиторских сущностей, 1 для UI и 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, чем это, скорее всего, аргументы и имя метода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top