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