应用程序基于spring-boot和hibernate for JPA provider。映射类以使用表中生成的ID值。所有课程都类似于:
@Entity
@Table(name = "table_name")
public class SomeEntity {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;
//...
}
应用程序在启动时使用Flyway构建模式(包括hibernate_sequence表),在hibernate验证模式之后在hibernate_sequence表中插入基本数据和移位序列:
spring.jpa.hibernate.ddl-auto=validate
问题是,hibernate在表中生成“随机”值。
SELECT * FROM users;
ID NAME
1 user1
32899072 user2
SELECT * FROM HIBERNATE_SEQUENCES;
SEQUENCE_NAME SEQUENCE_NEXT_HI_VALUE
user 1000
为什么hibernate会产生这种奇怪的值?
答案 0 :(得分:0)
你能尝试添加@TableGenerator这个表是由hibernate为GenerationType.TABLE创建的吗?
@Id
@GeneratedValue(strategy=GenerationType.TABLE, generator="Table_name")
@TableGenerator(
name="Table_name",
table="GENERATOR_TABLE",
pkColumnName = "key",
valueColumnName = "next",
pkColumnValue="autoId",
allocationSize=30
)
private Long id;