java - Hibernate Envers 如何记录额外的审计数据,例如被审计的表名

标签 java spring hibernate jboss hibernate-envers

我已经实现了 Hibernate Envers 的解决方案。

我通过创建自己的类来存储系统用户名来扩展 RevisionLister:

    import org.hibernate.envers.RevisionListener;

    public class CustomRevisionListener implements RevisionListener {

        public void newRevision(Object revisionEntity) {
            CustomRevisionEntity revision = (CustomRevisionEntity) revisionEntity;
            revision.setUsername(System.getProperty("user.name")); // for testing

        }

    }

这完成了工作,但我想做的是制作更全面的记录,其中包括正在审核的表名。

有谁知道我该怎么做。我找不到任何与记录表名相关的文档?

最佳答案

参见example 15.2 in the envers doc如何获取修改后的实体类。然后稍微修改一下代码,从实体类中获取表名(假设你在实体类上使用了JPA/Hibernate注解):

public class CustomEntityTrackingRevisionListener
             implements EntityTrackingRevisionListener {
    @Override
    public void entityChanged(Class entityClass, String entityName,
                              Serializable entityId, RevisionType revisionType,
                              Object revisionEntity) {
        // either javax.persistence.Table or org.hibernate.annotations.Table
        Table tableAnnotation = entityClass.getAnnotation(Table.class);
        if (tableAnnotation != null)
          String tableName = tableAnnotation.getName();
          ((CustomTrackingRevisionEntity)revisionEntity).addTable(tableName);
        }
    }

关于java - Hibernate Envers 如何记录额外的审计数据,例如被审计的表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14160947/

相关文章:

java - 使用 JComboBox 选择后 JPanel 不刷新

java - 创建 Android Wifi 聊天应用程序

java - Bean属性dataSource在Spring + Hibernate 3中不可写(因无法添加更多代码而重新发布)

java - Hibernate 'Cannot Release Connection' 异常?

java - hbm2ddl.auto 设置为更新时 hibernate 错误

java - 在 try-catch block 中使用 if 语句不适用于 JSoup

spring - java.lang.IllegalStateException : No WebApplicationContext found: no ContextLoaderListener registered?

Java Spring Rest Call使用父类(super class)获取子类

java - 无法确定 : com. packt.cardatabase.domain.Owner 的类型,位于表 : car, 的列 : [org. hibernate.mapping.Column(owner)]

java - Android 2.2 中访问 R. 资源的问题