【问题标题】:Renaming hibernate envers id and timestamp columns重命名休眠环境 id 和时间戳列
【发布时间】:2019-05-14 14:40:40
【问题描述】:

我正在尝试将自定义列添加到应用程序的审核中。

我有一个自定义的 RevisionEntity:

@Entity
@Table(name = "REVINFO")
@RevisionEntity(UserRevisionListener.class)
public class UserRevEntity extends DefaultRevisionEntity {
    private String username;

    public String getUsername() { return username; }

    public void setUsername(String username) { this.username = username; }
}

当持久化数据时,hibernate 执行将这个查询发送到数据库:

insert into REVINFO (timestamp, username, id) values (?, ?, ?)

问题是 REVINFO 表没有 id 和时间戳字段,我得到一个错误

SQLSyntaxErrorException: ORA-00904: "ID": 无效标识符

REVINTO 表如下所示:

我可以告诉 hibernate 将 id 和 timestamp 分别映射到 REV 和 REVSTMP 列吗?

请帮忙,谢谢。

【问题讨论】:

标签: java sql hibernate jpa


【解决方案1】:

试试这个。

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

@Entity
@Table(name = "REVINFO")
@RevisionEntity(UserRevisionListener.class)
public class UserRevEntity extends DefaultRevisionEntity {
    @Column(name = "USERNAME")
    private String username;

    @Column(name = "REV")
    private Integer id;

    @Column(name = "REVTSTMP")
    private BigInteger timestamp;

    // Make getter and setters

    public String getUsername() { return username; }

    public void setUsername(String username) { this.username = username; }
}

【讨论】:

  • 谢谢,我使用了上面的代码,但在删除 ... extends DefaultRevisionEntity 部分后它工作了。
猜你喜欢
  • 2012-12-06
  • 2011-08-24
  • 2015-12-18
  • 1970-01-01
  • 2018-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多