【发布时间】:2017-06-18 14:17:15
【问题描述】:
我需要在我的数据库中的所有表中都有一个唯一的 ID,该 ID 以偏移量开头,比如说 1000。低于该偏移量的 ID 是为 Java 代码中的常量引用的特殊记录保留的。换句话说,我希望任何表中持久化的第一条记录的 ID 为 1000,下一条记录为 1001,以此类推。
我按照 Hibernate 文档和各种帖子中的说明进行操作,这些是我正在使用的注释:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name = "my_sequence", initialValue = 1000, allocationSize = 10)
private long id;
不幸的是,Hibernate 完全忽略了 initialValue 设置。它生成以下 SQL 代码:
create table hibernate_sequence (next_val bigint)
insert into hibernate_sequence values ( 1 )
我也尝试过同样不起作用的 TABLE 策略。 ID 以 1 开头。
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@TableGenerator(name = "my_sequence", initialValue = 1000, allocationSize = 10)
private long id;
顺便说一句,这确实适用于 EclipseLink JPA 提供程序。我的 Hibernate 版本是 5.2.7,我正在使用 JPA API。我正在使用 MySQL。
有人遇到过这个问题吗?
提前致谢。
【问题讨论】: