Java Hibernate Envers介绍如何记录其他审核数据,例如正在审核的表名

Java Hibernate Envers介绍如何记录其他审核数据,例如正在审核的表名,java,spring,hibernate,jboss,hibernate-envers,Java,Spring,Hibernate,Jboss,Hibernate Envers,我已经实现了HibernateEnvers的解决方案 我通过创建自己的类来存储系统用户名来扩展RevisionLister: import org.hibernate.envers.RevisionListener; public class CustomRevisionListener implements RevisionListener { public void newRevision(Object revisionEntity) {

我已经实现了HibernateEnvers的解决方案

我通过创建自己的类来存储系统用户名来扩展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

        }

    }
这就是工作,但我想做的是做一个更全面的记录,其中包括正在审核的表名


有人知道我是怎么做到的吗。我找不到任何与记录表名有关的文档?

我不知道Envers是否能够即时跟踪正在审核的记录的表名,但是我知道它可以跟踪实体名,而实体名可以由

启用。我不知道Envers是否可以直接跟踪正在审核的记录的表名,但我知道它可以跟踪实体名,实体名可以由

启用。查看如何获取修改后的实体类。然后稍微更改代码以从实体类获取表名(假设您在实体类上使用JPA/Hibernate注释):

请参见如何获取修改的实体类。然后稍微更改代码以从实体类获取表名(假设您在实体类上使用JPA/Hibernate注释):


您可以扩展
DefaultTrackingModifiedEntitiesRevisionEntity
,或将修订参数中的org.hibernate.envers.track\u entities\u changed\u配置为true


请参阅Envers文档:

您可以扩展
DefaultTrackingModifiedEntitysRevisionEntity
,或将org.hibernate.Envers.track\u entities\u changed\u in\u revision参数配置为true

请参阅Envers文档:

这有用吗?那有用吗?
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);
        }
    }