我已经在使用Hibernate Envers来审核用户通过UI更新的实体;但是,我也有在后台运行的异步作业,并希望使用Envers审核这些作业。现在,对于UI,我跟踪哪个HttpRequest进行了更改,这给了我日期,用户,会话等。对于后台作业,我想跟踪作业运行的日期以及修改它的确切作业(工作班)。
是否可以设置2个审核实体,1个用于UI,1个用于系统更改?
沃尔特
答案 0 :(得分: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中存储比这更多的属性,很可能是参数和方法名称。