Hibernate - Envers - 多个审计目标

时间:2010-05-11 19:07:46

标签: java hibernate jpa-2.0 hibernate-envers

我已经在使用Hibernate Envers来审核用户通过UI更新的实体;但是,我也有在后台运行的异步作业,并希望使用Envers审核这些作业。现在,对于UI,我跟踪哪个HttpRequest进行了更改,这给了我日期,用户,会话等。对于后台作业,我想跟踪作业运行的日期以及修改它的确切作业(工作班)。

是否可以设置2个审核实体,1个用于UI,1个用于系统更改?

沃尔特

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中存储比这更多的属性,很可能是参数和方法名称。