Java Hibernate envers添加审核列(用户名)
要求是为每个审核条目添加用户名列 在谷歌搜索了很多东西并浏览了enverse文档之后,我想出了如何实现它。我已按以下方式实施: 实现了一个修订侦听器:Java Hibernate envers添加审核列(用户名),java,hibernate,hibernate-envers,Java,Hibernate,Hibernate Envers,要求是为每个审核条目添加用户名列 在谷歌搜索了很多东西并浏览了enverse文档之后,我想出了如何实现它。我已按以下方式实施: 实现了一个修订侦听器: @Configurable public class UserRevisionListener implements RevisionListener { public void newRevision(Object revisionEntity) { UserRevEntity revision = (UserR
@Configurable
public class UserRevisionListener implements RevisionListener
{
public void newRevision(Object revisionEntity)
{
UserRevEntity revision = (UserRevEntity) revisionEntity;
String username = "";
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
Object principal = auth.getPrincipal();
if (principal != null && principal instanceof DepotUser)
username = ((DepotUser) principal).getUsername();
revision.setUsername(username);
}
}
创建实体类:
@Entity
@Table(name = "USER_REV_ENTITY")
@RevisionEntity(UserRevisionListener.class)
public class UserRevEntity extends DefaultRevisionEntity
{
private static final long serialVersionUID = 1L;
private String username;
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
}
我引用了一个链接,该链接具有相同“”的示例
默认审计工作正常
首先,带有新用户名列的审核修订表应该自动生成(我想!)。它没有被生成
因此,我尝试在UserRevEntity中创建表并添加表映射。但是没有运气
有人能帮我确定这个问题吗
提前谢谢
@MappedSuperclass
public class DefaultRevisionEntity implements Serializable {
@Id
@GeneratedValue
@RevisionNumber
private int id;
@RevisionTimestamp
private long timestamp;
// ... rest of the class body here....
这是DefaultRevisionEntity,它已使用id和时间戳声明。
对于新的列用户名,必须在UserRevEntity中将其注释为@column,如下所示
@Column(name="username")
private String username;