gpt4 book ai didi

java - Hibernate 忽略序列生成器的 initialValue

转载 作者:行者123 更新时间:2023-11-29 06:05:20 24 4
gpt4 key购买 nike

我需要在我的数据库中的所有表中有一个以偏移量开头的唯一 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。

有人遇到过这个问题吗?

提前致谢。

最佳答案

生成器名称必须包含在@GeneratedValue 注解中,如:

@GeneratedValue(strategy = GenerationType.TABLE, generator = "my_sequence")    
@TableGenerator(
name = "my_sequence",
table = "id_gen",
pkColumnName = "gen_name",
valueColumnName = "gen_val",
initialValue = 1000,
allocationSize = 10)

关于java - Hibernate 忽略序列生成器的 initialValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41986476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com