Java Hibernate主键约束冲突
我正在尝试编写一个SQL脚本,将数据从某个旧表迁移到新表。 新表主键(id)由hibernate管理,旧表的主键也是如此。 我不知道如何使用普通SQL为新表分配ID,所以我要做的是从旧表中获取ID。 迁移脚本按预期工作 在某种程度上,我的应用程序尝试使用Hibernate将数据插入到新表中,我得到了主键约束冲突异常。我怀疑这是因为hibernate分配的键与我在迁移旧数据时提供的键冲突。 顺便说一句,hibernate被配置为为为每个表分配唯一的主键 我做错了什么? 我应该如何解决这个问题Java Hibernate主键约束冲突,java,sql,hibernate,Java,Sql,Hibernate,我正在尝试编写一个SQL脚本,将数据从某个旧表迁移到新表。 新表主键(id)由hibernate管理,旧表的主键也是如此。 我不知道如何使用普通SQL为新表分配ID,所以我要做的是从旧表中获取ID。 迁移脚本按预期工作 在某种程度上,我的应用程序尝试使用Hibernate将数据插入到新表中,我得到了主键约束冲突异常。我怀疑这是因为hibernate分配的键与我在迁移旧数据时提供的键冲突。 顺便说一句,hibernate被配置为为为每个表分配唯一的主键 我做错了什么? 我应该如何解决这个问题 谢谢
谢谢如果您对主(例如mysql、MSSQL)键列使用具有自动增量的数据库,则必须将现有ID中的自动增量值设置为最大值(迁移后)。
如果使用序列生成id(例如oracle、postgree),则必须将当前序列值从现有id更改为最大值(迁移后)。Ok-事实证明,在使用@GeneratedValue(strategy=GenerationType.TABLE)和Hibernate时,我们有一个Hibernate_序列表,用于跟踪my DB中每个表的下一个id。所以我所要做的就是更新这个表并正确设置下一个id——正如前面所说的
谢谢 你必须从旧桌子上取身份证吗?如果你有新的ID,它会破坏一些东西吗?如果有帮助的话,我不必使用旧的ID..谢谢-这可能会有帮助,但我没有使用数据库ID生成器(至少我不知道)。我使用hibernate注释的方式如下:@Id@GeneratedValue(strategy=GenerationType.TABLE)long-Id;我不知道它是怎么工作的