我在我的应用程序中使用Hibernate Envers来存储审计跟踪数据,所有审计相关信息都正确地存储在* _AUD表中。但是,所有_AUD表中rev列的数据类型都是Integer数据类型。我期待一个大的int数据类型,因为整数数据类型的最大范围是2147483647.有没有办法将数据类型更改为big int?
答案 0 :(得分:3)
默认情况下,Envers实施使用Integer
列的REV
数据类型。
为了利用Long
数据类型,您需要提供带有相应注释的自定义修订实体。以下是使用BIGINT
兼容REV
列时替换现有默认实现的示例。
@Entity
@RevisionEntity
public class CustomRevisionEntity implements Serializable {
@Id
@GeneratedValue
@RevisionNumber
private Long rev;
@RevisionTimestamp
private Long timestamp;
/* provide getter/setters */
}
注意:所有审计表都会使其REV
列的数据类型与您在修订实体类中使用的数据类型相匹配。
有一个开放的JIRA {{3}}可以将默认实施迁移到使用Long
而不是基于Integer
的修订版;但是,它确实要求我们将升级路径视为该问题的实现细节以考虑现有用户。
在此之前,使用自定义修订实体进行新实施是一种解决方法。