当前位置: 首页 > 面试题库 >

Hibernate5序列发生器未提供正确的值

宰父远
2023-03-14
问题内容

迁移到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触发以下查询:

select nextval ('patregn_seq')
得出5367。表中id字段的最后一个值为5358。

我明白了
ERROR: duplicate key value violates unique constraint "patientregistration_pkey" [java] Detail: Key (id)=(5318) already exists.

我相信这个问题类似于这和这个,但我不得不问,因为给出的解决方案有没有为我工作:

我加了

<property value="true" name="hibernate.id.new_generator_mappings"/>

到我的persistence.xml,但无济于事。任何帮助将不胜感激。


问题答案:

实际上,当您迁移到新的Hibernate版本5.2.7时,hibernate.id.new_generator_mappings默认值为true

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

有关更多信息,请在用户指南中搜索new_generator_mappings:-http :
//docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html



 类似资料:
  • 我有一个Spark UDF来计算列的滚动计数,精确地说是wt时间。如果我需要计算24小时的滚动计数,例如以时间2020-10-02 09:04:00进入,我需要回看直到2020-10-01 09:04:00(非常精确)。 如果我在本地运行,滚动计数UDF工作良好,并给出正确的计数,但当我在集群上运行时,它给出的结果不正确。下面是示例输入和输出 输入 预期产出 最后两个条目值在本地是4和5,但是在集

  • > 我通过terraform创建了一个自签名tls证书和私钥。这些文件称为服务器。密钥和服务器。crt 我用这个证书和私钥创建了一个kubernetes tls机密:kubectl create secret tls dpaas secret-n dpaas prod-key server。密钥--cert server.crt 这工作正常,nginx入口ssl终止工作,以下kubectl命令:k

  • 在更新到Laravel7的过程中,我在composer中添加了几个额外的包。json文件(在Github上Laravel 7存储库的composer.json文件中列出的“require”和“require dev”下),但在我运行composer update时,在composer.json上更新了Laravel版本,没有添加/安装。 然后我运行php artisan供应商:列表来列出哪些提供商

  • 在更新到Laravel7的过程中,我在composer中添加了几个额外的包。json文件(在Github上Laravel 7存储库的composer.json文件中列出的“require”和“require dev”下),但在我运行composer update时,在composer.json上更新了Laravel版本,没有添加/安装。 然后我运行php artisan供应商:列表来列出哪些提供商

  • 问题内容: 我正在尝试使用以下方式提供SVG地图: 在Firefox中,这会导致插件提示。如果我重命名地图。svg映射。xml,它可以正确显示图像。我认为这是因为Django的开发服务器(特别是django.views.static.serve)没有为svg提供正确的mime类型。这是问题吗?如果是,是否有补丁? 问题答案: 我目前没有可用的Django来进行测试,但看起来静态服务器使用mimet

  • 问题内容: 根据该Jetty指南中有关使用Keytool和OpenSSL的步骤3b(最后一步),我正在执行以下命令: 当我运行命令时,我得到: 你知道如何解决吗? 问题答案: 就我而言,我使用下载的Windows openSSL完成了一些步骤,而其他步骤则使用了CentOs6框上已经存在的openSSL。当我在CentOs / linux机器上执行所有步骤时,错误消失了。 次要的或许是注意linu