Hibernate Envers rev列数据类型是Integer

时间:2016-07-26 11:47:37

标签: hibernate-envers

我在我的应用程序中使用Hibernate Envers来存储审计跟踪数据,所有审计相关信息都正确地存储在* _AUD表中。但是,所有_AUD表中rev列的数据类型都是Integer数据类型。我期待一个大的int数据类型,因为整数数据类型的最大范围是2147483647.有没有办法将数据类型更改为big int?

1 个答案:

答案 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的修订版;但是,它确实要求我们将升级路径视为该问题的实现细节以考虑现有用户。

在此之前,使用自定义修订实体进行新实施是一种解决方法。