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
的修订;但是,它确实要求我们将升级路径视为该问题的实施细节,以考虑现有用户。
在此之前,使用自定义修订实体进行新实现是一种解决方法。
我在我的应用程序中使用 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
的修订;但是,它确实要求我们将升级路径视为该问题的实施细节,以考虑现有用户。
在此之前,使用自定义修订实体进行新实现是一种解决方法。