首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >违反Hibernate主键约束

问违反Hibernate主键约束
EN

Stack Overflow用户
提问于 2012-07-16 16:16:40
回答 2查看 3.2K关注 0票数 5

我正在尝试编写一个SQL脚本来将数据从一些旧表迁移到一个新表。新表的主键(id)由hibernate管理,旧表的主键也是如此。我不知道如何使用纯SQL为新表分配ids,所以我要做的就是从旧表中获取ids。迁移脚本按预期工作。

在某些情况下,我的应用程序试图使用Hibernate将数据插入到新表中,但我得到了违反主键约束的异常。我怀疑这是因为hibernate分配的键与我在迁移旧数据时给出的键冲突。顺便说一句,hibernate被配置为为每个表分配唯一的主键。

我做错了什么?我该如何解决这个问题?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-16 16:45:21

如果对主键列(例如mysql、MSSQL)使用具有自动增量的数据库,则必须将现有ids的自动增量值设置为最大值(在迁移之后)。如果使用sequence生成If (例如oracle、postgree),则必须将当前sequence值从现有If更改为max (在迁移之后)。

票数 2
EN

Stack Overflow用户

发布于 2012-07-16 20:43:31

好的-事实证明,当使用@GeneratedValue(策略= GenerationType.TABLE)和Hibernate时,我们有一个hibernate_sequences表,它跟踪我的数据库中每个表的下一个id。因此,我所要做的就是更新这个表并正确设置下一个id --就像前面所说的那样。

谢谢!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11500434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档