2

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

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

沃尔特

4

1 回答 1

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

于 2010-05-24T18:22:46.267 回答