HibernateEnvers自定义列名

时间:2016-07-08 19:48:18

标签: hibernate hibernate-envers

我正在我正在处理的项目中实现Hibernate Envers,对于这个客户端,数据库中的表和列必须遵循某种名称模式。名称模式使用表名生成列名的一部分,保存修订的表与原始表具有不同的名称(当然),因此我需要能够更改生成的表的列名称Envers。

如何更改实体试听表的列名?

  • 我正在使用hibernate 4.3.11-FINAL
  • 我没有遇到修改表(REVINFO)名称和列没有实体的试听表名称

2 个答案:

答案 0 :(得分:3)

我不认为Envers提供此功能(更改列名称),我希望我错了。

我能想到的两个选择是:

  • 深入了解Envers代码并尝试了解如何自定义数据在审计中的编写方式,我正在考虑列识别部分
  • 改变审计的工作方式,例如针对可能使用触发器的方法

答案 1 :(得分:-1)

REVINFO是默认的RevisionListener

的默认表

您需要创建实现RevisionListener的自定义修订侦听器 和你的自定义revsionEntity。

自定义实体侦听器:

public class CustomRevisionEntityListener implements RevisionListener {

@Override
public void newRevision(Object revisionEntity) {
    CustomRevisionEntity revision = (CustomRevisionEntity) revisionEntity;
    revision.setIPAddress("UserIPAddress");
}
}

自定义实体,您可以使用任何表名和任何字段:

@Entity
@Table(name="anyTableName")
@RevisionEntity(CustomRevisionEntityListener.class)
@Setter
@Getter
@EqualsAndHashCode
public class CustomRevisionEntity implements Serializable {

    @Id
    @GeneratedValue
    @RevisionNumber
    @Column(name = "rev")
    private int id;

    @RevisionTimestamp
    @Column( name = "revtstmp")
    private long timestamp;


    @Column(name = "ipAddress")
    private String IPAddress ; 

}