Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate envers:如何获取当前已审核的表名?_Java_Hibernate_Hibernate Envers_Auditing_Spring Data Envers - Fatal编程技术网

Java Hibernate envers:如何获取当前已审核的表名?

Java Hibernate envers:如何获取当前已审核的表名?,java,hibernate,hibernate-envers,auditing,spring-data-envers,Java,Hibernate,Hibernate Envers,Auditing,Spring Data Envers,使用Hibernate Envers,是否可以获取当前已审核表?我从中选取了示例,但添加了一个额外的列tableName: @Entity @RevisionEntity(ExampleListener.class) public class ExampleRevEntity extends DefaultRevisionEntity { private String username; private tableName; ... } 听众: public class

使用Hibernate Envers,是否可以获取当前已审核表?我从中选取了示例,但添加了一个额外的列
tableName

@Entity
@RevisionEntity(ExampleListener.class)
public class ExampleRevEntity extends DefaultRevisionEntity {
    private String username;
    private tableName;
    ...
}
听众:

public class ExampleListener implements RevisionListener {

    public void newRevision(Object revisionEntity) {
        ExampleRevEntity exampleRevEntity = (ExampleRevEntity) revisionEntity;
        ...
        exampleRevEntity.setUsername(...);

        exampleRevEntity.setTableName(...); // How to get the current table audited table?

    }
}
我找到了这篇老文章,但没有相关的答案。 非常感谢

您可以使用,它是
修订侦听器的扩展

    public class ExampleRevEntityListener
                 implements EntityTrackingRevisionListener {
        @Override
        public void entityChanged(java.lang.Class entityClass, java.lang.String entityName, 
           java.io.Serializable entityId, RevisionType revisionType, java.lang.Object revisionEntity) {

            Table tableAnnotation = entityClass..getAnnotation(javax.persistence.Table.class).name();
        }
您可以使用,它是
RevisionListener
的扩展

    public class ExampleRevEntityListener
                 implements EntityTrackingRevisionListener {
        @Override
        public void entityChanged(java.lang.Class entityClass, java.lang.String entityName, 
           java.io.Serializable entityId, RevisionType revisionType, java.lang.Object revisionEntity) {

            Table tableAnnotation = entityClass..getAnnotation(javax.persistence.Table.class).name();
        }

谢谢,我会试试的。我试过了,但这还不够,因为同一笔交易可能涉及许多实体。使用此解决方案,只取最后一张表。我必须寻找另一个解决方案。应该为所有审计实体调用它。事务中持久化了多少个实体?确保为所有已审核实体调用它,但只捕获最后一个实体。我认为这是一种正常的行为。在我的案例中,涉及3个实体,最后一个实体获胜。谢谢,我会尝试一下。我尝试了一下,但这还不够,因为同一笔交易可能涉及多个实体。使用此解决方案,只取最后一张表。我必须寻找另一个解决方案。应该为所有审计实体调用它。事务中持久化了多少个实体?确保为所有已审核实体调用它,但只捕获最后一个实体。我认为这是一种正常的行为。在我的案例中,涉及3个实体,最后一个实体获胜。