hibernate 5 sequencegenerator未给出正确的值

hibernate 5 sequencegenerator未给出正确的值,hibernate,sequence,hibernate-5.x,Hibernate,Sequence,Hibernate 5.x,在迁移到Hibernate 5.2.7之后,我似乎得到了不正确的id字段值 我的代码: @Id @SearchableId @GeneratedValue(strategy=GenerationType.AUTO, generator="hms_seq_gen") @SequenceGenerator(name="hms_seq_gen", sequenceName="patregn_seq") protected Integer ID; Hibernate触发此查询: 选择nextval('

在迁移到Hibernate 5.2.7之后,我似乎得到了不正确的id字段值

我的代码:

@Id @SearchableId
@GeneratedValue(strategy=GenerationType.AUTO, generator="hms_seq_gen")
@SequenceGenerator(name="hms_seq_gen", sequenceName="patregn_seq")
protected Integer ID;
Hibernate触发此查询:

选择nextval('patregn_seq')

这个数字是5367。表中id字段的最后一个值是5358

我得到了这个
错误:重复键值违反唯一约束“patientregistration\u pkey”
[java]详细信息:密钥(id)=(5318)已存在。

我确信这个问题类似于和,但我不得不问,因为那里给出的解决方案对我不起作用:

我补充说


到我的persistence.xml,但没有用。非常感谢您的帮助。

实际上,当您迁移到新的Hibernate版本5.2.7时,
Hibernate.id.new\u generator\u mappings
默认为
true

为了向后兼容,您应该将此标志更改为
false


有关更多信息,请在用户指南中搜索
新的\u生成器\u映射
:-

谢谢您的建议。它起作用了。但我现在有点困惑。根据Steve Ebersole在上的评论,应该将其设置为true以获得所描述的行为-这正是我认为我需要的。另外,当我将属性设置为false时,会收到一条警告:
发现使用了不推荐使用的[org.hibernate.id.SequenceGenerator]基于序列的id生成器;改为使用org.hibernate.id.enhanced.SequenceStyleGenerator。
即使我使用JPA SequenceGeneratorEah Thomas,它也会生成一个警告。从用户指南-“现有应用程序可能希望禁用此选项(将其设置为false),以实现从3.x和4.x升级到5.x的兼容性。”实际上,在开始开发应用程序时,应将其设置为true,但对于遗留应用程序,应禁用此选项,否则应用程序将失败。