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
Java Hibernate envers添加审核列(用户名)_Java_Hibernate_Hibernate Envers - Fatal编程技术网

Java Hibernate envers添加审核列(用户名)

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

要求是为每个审核条目添加用户名列

在谷歌搜索了很多东西并浏览了enverse文档之后,我想出了如何实现它。我已按以下方式实施:

实现了一个修订侦听器:

@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;