Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate主键约束冲突_Java_Sql_Hibernate - Fatal编程技术网

Java Hibernate主键约束冲突

Java Hibernate主键约束冲突,java,sql,hibernate,Java,Sql,Hibernate,我正在尝试编写一个SQL脚本,将数据从某个旧表迁移到新表。 新表主键(id)由hibernate管理,旧表的主键也是如此。 我不知道如何使用普通SQL为新表分配ID,所以我要做的是从旧表中获取ID。 迁移脚本按预期工作 在某种程度上,我的应用程序尝试使用Hibernate将数据插入到新表中,我得到了主键约束冲突异常。我怀疑这是因为hibernate分配的键与我在迁移旧数据时提供的键冲突。 顺便说一句,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;我不知道它是怎么工作的