Hibernate Envers rev 列数据类型为 Integer

Hibernate Envers rev column data type is Integer

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

默认情况下,Envers 实现对 REV 列使用 Integer 数据类型。

为了利用 Long 数据类型,您需要提供带有适当注释的自定义修订实体。下面是一个示例,它将在使用 BIGINT 兼容的 REV 列时替换现有的默认实现。

@Entity
@RevisionEntity
public class CustomRevisionEntity implements Serializable {
  @Id
  @GeneratedValue
  @RevisionNumber
  private Long rev;
  @RevisionTimestamp
  private Long timestamp;
  /* provide getter/setters */
}

注意:所有审计表都会使其 REV 列的数据类型与您在修订实体 class.[ 中使用的数据类型相匹配=20=]

有一个开放的 JIRA HHH-6615 可以迁移默认实现以使用 Long 而不是基于 Integer 的修订;但是,它确实要求我们将升级路径视为该问题的实施细节,以考虑现有用户。

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