使用envers审计实体而不添加注释

时间:2016-05-17 12:54:54

标签: java hibernate hibernate-envers

我正在使用Envers来审核数据库中的更改。

现在我有一个依赖的课程,我想审核。由于我无法编辑源代码,因此我无法在注释中添加简单的@Audited

我很惊讶似乎没有办法审核实体而是添加注释。有没有办法手动注册实体进行审核?

对不起,我觉得答案会很明显,但到目前为止我找不到解决办法。

1 个答案:

答案 0 :(得分:1)

直接无法实现(见How to put envers annotations into XML Mapping Metadata(orm.xml) file)。您可以将此类(即ClassNotAuditable)的审计类(即ClassA)的关系注释为可审计的:

@Audited
public class ClassA{

  private ClassNotAuditable instance;

  @Audited
  public ClassNotAuditable getInstance(){
    return instance;
  }

}

但是Envers会忽略它,因为要审核的类没有标记为可审计。没有办法将Class标记为可审计但具有anotations。

但你可以尝试一种解决方法。使用您自己的另一个类扩展您要审核的类,并将其标记为Auditable。重写您自己的类的引用以使用此新类。也许这会成功。

@Auditable
public class NewClassAuditable extends ClassNotAuditable{ 
...
}

@Audited
public class ClassA{

  private NewClassAuditable instance;

  @Audited
  public NewClassAuditable getInstance(){
    return instance;
  }

}