获取"唯一键约束违规"由于"增量"

时间:2012-08-08 04:31:01

标签: java hibernate

我是新手,我正面临一个奇怪的问题。 我使用的是Hibernate 2.0,并且自从过去两天以来一直坚持这个问题。

我有一张有两张桌子的表格即可。借贷。每个都会有多个条目。每个条目将作为单独的记录存储在表中。两个表中的数据将存储在同一个表中。 我已将“ID”字段作为表的主键,并将其配置为自动增量。

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

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

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

有人能指导这个问题吗?以前有人遇到过类似的问题吗? 任何指针都会非常感激。

此致 阿希什

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

确保您的表格ID字段设置为自动增量,然后您应该更改喜欢这个;

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