Java 获得;唯一密钥约束冲突“;由于;“增量”;

Java 获得;唯一密钥约束冲突“;由于;“增量”;,java,hibernate,Java,Hibernate,我刚开始冬眠,我面临一个奇怪的问题。 我使用的是Hibernate2.0,从过去两天以来一直在关注这个问题 我有一个表单,它有两个表,即。借贷。每个都将包含多个条目。每个条目将作为单独的记录存储在表中。两个表中的数据将存储在同一个表中。 我制作了一个“ID”字段作为表的主键,并将其配置为自动递增 <id column="ID" name="id"> <generator class="increment"/> </id> 当我第一次提交时,我将条目存储在

我刚开始冬眠,我面临一个奇怪的问题。 我使用的是Hibernate2.0,从过去两天以来一直在关注这个问题

我有一个表单,它有两个表,即。借贷。每个都将包含多个条目。每个条目将作为单独的记录存储在表中。两个表中的数据将存储在同一个表中。 我制作了一个“ID”字段作为表的主键,并将其配置为自动递增

<id column="ID" name="id">
<generator class="increment"/>
</id>

当我第一次提交时,我将条目存储在工作正常的表中。“自动增量”在当时工作得非常好。 在更新操作中,由于某些业务逻辑,我从数据库表中删除了与每个表相关的所有条目,并再次输入新记录。问题开始了

我将用一个例子来解释确切的场景: 我有两个条目借方和贷方,每个条目的ID分别为1和2以及3和4。现在在更新操作中,我首先删除借方记录(即IDS1和IDS2)并提交更改。提交后,我尝试插入一组新的借记记录。理想情况下,它应该从表中选择最大ID,并为新记录生成下一个ID(即5和6),但它会给出“唯一键约束冲突”错误

有人能在这个问题上提供指导吗?以前有人遇到过类似的问题吗? 任何指点都将不胜感激

问候,,
Ashish

尝试使用本机密钥生成器:

<id column="ID" name="id">
  <generator class="native"/>
</id>


如果数据库的表已设置为自动递增主键ID,则它将与hibernate的自动递增生成器冲突。

尝试使用本机键生成器:

<id column="ID" name="id">
  <generator class="native"/>
</id>


如果数据库的表已经设置为自动递增主键ID,那么它将与hibernate的自动递增生成器冲突。

确保表ID字段设置为自动递增,然后您应该这样更改

     <id column="ID" name="id">
     <generator class="identity"/>
     </id>

确保您的表ID字段设置为自动递增,然后您应该这样更改

     <id column="ID" name="id">
     <generator class="identity"/>
     </id>


您能否显示执行此操作的代码,以便我们了解您是如何“提交”更改的?另外,您可能希望使用
序列
而不是
增量
(更安全,并且使用数据库序列而不是在JVM中跟踪ID)。您的建议最适合我。非常感谢。您能展示执行此操作的代码,以便我们看到您如何“提交”更改吗?另外,您可能希望使用
序列
而不是
增量
(更安全,并且使用数据库序列而不是在JVM中跟踪ID)。您的建议最适合我。非常感谢。