1

我是休眠新手,我面临一个奇怪的问题。我正在使用 Hibernate 2.0,并且自过去 2 天以来一直被困在这个问题上。

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

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

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

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

有人可以指导这个问题吗?有没有人遇到过类似的问题?任何指针将不胜感激。

问候, 阿希什

4

2 回答 2

1

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

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

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

于 2012-08-08T04:41:40.877 回答
0

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

     <id column="ID" name="id">
     <generator class="identity"/>
     </id>
于 2012-08-08T05:24:29.143 回答