Java 在使用Hibernate Envers时,如何在审核后立即获取版本id
我正在使用Hibernate Envers进行审计。它很好用。但是,我正在尝试在修改数据后立即获取版本id。我拥有如下CustomRevisionEntity:Java 在使用Hibernate Envers时,如何在审核后立即获取版本id,java,audit,hibernate-envers,Java,Audit,Hibernate Envers,我正在使用Hibernate Envers进行审计。它很好用。但是,我正在尝试在修改数据后立即获取版本id。我拥有如下CustomRevisionEntity: import javax.persistence.Entity; import org.hibernate.envers.DefaultRevisionEntity; import org.hibernate.envers.RevisionEntity; @Entity @RevisionEntity(CustomRevisionL
import javax.persistence.Entity;
import org.hibernate.envers.DefaultRevisionEntity;
import org.hibernate.envers.RevisionEntity;
@Entity
@RevisionEntity(CustomRevisionListener.class)
public class CustomRevisionEntity extends DefaultRevisionEntity {
private static final long serialVersionUID = 3775550420286576001L;
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
和CustomRevisionListener:
import org.golf.repository.domain.entity.CustomRevisionEntity;
import org.hibernate.envers.RevisionListener;
public class CustomRevisionListener implements RevisionListener {
public void newRevision(Object revisionEntity) {
CustomRevisionEntity revision = (CustomRevisionEntity) revisionEntity;
revision.setUsername("username"); // For testing
}
}
那么,例如,当像下面这样更新地址时,如何获取rev id
public class TestClass {
updateAddress(address);
// how to get rev id here?
}
谢谢 好的,我自己解决了这个问题。只需在CustomRevisionEntity类中添加另一个属性,例如revId。它将在customrevisionentity表中添加一个新列revid。在CustomRevisionListener类中,添加类似于
revision.setRevId(RevMapper.getRevId())的内容代码>,RevMapper是包含静态属性revId、getter和setter的类。因此,在TestClass中,需要使用RevMapper.setRevId(id)设置revId代码>
以上只是一个简单的解释,您需要考虑ReVID是如何生成的,等等。