我已经使用休眠Envers审计实体由通过UI用户更新;不过,我也有在后台运行的异步工作,并希望审计该等以及使用Envers。现在,对于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