【问题标题】:Audit entity with envers without adding annotation审计实体与envers而不添加注释
【发布时间】:2016-05-17 12:54:53
【问题描述】:

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

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

我很惊讶似乎没有办法审计实体,只能添加注释。有什么方法可以手动注册实体进行审计?

对不起,我感觉答案会很明显,但我目前还没有找到解决方案。

【问题讨论】:

    标签: java hibernate hibernate-envers


    【解决方案1】:

    这是不可能的(见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 更灵活。
    猜你喜欢
    • 1970-01-01
    • 2015-12-14
    • 2012-08-10
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 2012-12-05
    • 2021-04-01
    相关资源
    最近更新 更多