我正在我正在处理的项目中实现Hibernate Envers,对于这个客户端,数据库中的表和列必须遵循某种名称模式。名称模式使用表名生成列名的一部分,保存修订的表与原始表具有不同的名称(当然),因此我需要能够更改生成的表的列名称Envers。
如何更改实体试听表的列名?
答案 0 :(得分:3)
我不认为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 ;
}