要求是为每个审核条目添加用户名列。
经过google搜索并浏览逆向文档后,我想出了如何实现它。我已经实现了如下:
实施了修订监听器:
@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;
}
}
我推荐的链接中有一个相同的例子" Thinking in Software"。
默认审核工作正常。
首先,使用新用户名列进行审核修订的表格应自动生成(我认为!)。它没有生成。
所以,我尝试创建表并在 UserRevEntity 中添加表映射。但没有运气。
任何人都可以帮助我确定问题吗?
提前谢谢。
答案 0 :(得分:0)
@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;