【发布时间】:2016-05-17 12:54:53
【问题描述】:
我正在使用 Envers 来审核数据库中的更改。
现在我有一个来自依赖项的类,我想审核它。由于我无法编辑源代码,因此无法在注释中添加简单的@Audited。
我很惊讶似乎没有办法审计实体,只能添加注释。有什么方法可以手动注册实体进行审计?
对不起,我感觉答案会很明显,但我目前还没有找到解决方案。
【问题讨论】:
标签: java hibernate hibernate-envers
我正在使用 Envers 来审核数据库中的更改。
现在我有一个来自依赖项的类,我想审核它。由于我无法编辑源代码,因此无法在注释中添加简单的@Audited。
我很惊讶似乎没有办法审计实体,只能添加注释。有什么方法可以手动注册实体进行审计?
对不起,我感觉答案会很明显,但我目前还没有找到解决方案。
【问题讨论】:
标签: java hibernate hibernate-envers
这是不可能的(见How to put envers annotations into XML Mapping Metadata(orm.xml) file)。您可以将审计类(即 ClassA)与此类(即 ClassNotAuditable)的关系注释为可审计:
@Audited
public class ClassA{
private ClassNotAuditable instance;
@Audited
public ClassNotAuditable getInstance(){
return instance;
}
}
但 Envers 会忽略它,因为要审计的类未标记为可审计。没有办法将 Class 标记为可审计但带有注释。
但是您可以尝试一种解决方法。用您自己的另一个扩展您要审核的课程并将其标记为可审核。重写您自己的类的引用以使用这个新类。也许这会奏效。
@Auditable
public class NewClassAuditable extends ClassNotAuditable{
...
}
@Audited
public class ClassA{
private NewClassAuditable instance;
@Audited
public NewClassAuditable getInstance(){
return instance;
}
}
【讨论】:
ClassNotAuditable 的源代码复制到我的项目中并添加了注释。我希望 envers 更灵活。