Java Hibernate Envers介绍如何记录其他审核数据,例如正在审核的表名
我已经实现了HibernateEnvers的解决方案 我通过创建自己的类来存储系统用户名来扩展RevisionLister: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) {
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);
}
}