我在我的应用程序中使用 Hibernate Envers 来存储审计跟踪数据,所有与审计相关的信息都正确存储在 *_AUD 表中。但是,所有_AUD表中rev列的数据类型都是Integer数据类型。我期待一个 big int 数据类型,因为 integer 数据类型的最大范围是 2147483647。有没有办法将数据类型更改为 big int?
默认情况下,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 */
}
Run Code Online (Sandbox Code Playgroud)
注意:所有审计表都会使其REV列的数据类型与您在修订实体类中使用的数据类型相匹配。
有一个开放的 JIRA HHH-6615来迁移默认实现以使用Long而不是Integer基于修订;但是,它确实要求我们将升级路径视为该问题的实施细节,以考虑到现有用户。
在此之前,为新实现使用自定义修订实体是一种解决方法。
| 归档时间: |
|
| 查看次数: |
2008 次 |
| 最近记录: |