1

私は冬眠するのが初めてで、奇妙な問題に直面しています。私は Hibernate 2.0 を使用しており、過去 2 日間この問題に悩まされています。

私は2つのテーブルを持つフォームを持っています。デビットとクレジット。それぞれが複数のエントリを保持します。各エントリは、個別のレコードとしてテーブルに保存されます。両方のテーブルのデータが同じテーブルに格納されます。テーブルの主キーとして「ID」フィールドを作成し、自動インクリメントとして構成しました。

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

初めて送信するとき、正常に機能するテーブルにエントリを保存します。その際、自動インクリメントは非常にうまく機能します。更新アクションでは、いくつかのビジネス ロジックにより、各テーブルに関連するすべてのエントリをデータベース テーブルから削除し、新しいレコードを再度入力します。ここで問題が始まります。

例を使用して正確なシナリオを説明します。それぞれ ID 1 と 2 と 3 と 4 を持つ 2 つのエントリの借方と貸方があります。更新アクションでは、最初に借方レコード (ID 1 と 2) を削除し、変更をコミットします。コミットした後、借方の新しいレコードセットを挿入しようとします。理想的には、テーブルから最大 ID を選択し、新しいレコードの次の ID (つまり、5 & 6) を生成する必要がありますが、「一意のキー制約違反」エラーが発生します。

誰でもこの問題について案内できますか? 誰かが以前に同様の問題に直面したことがありますか? 任意のポインタは本当に高く評価されます.

よろしく、アシッシュ

4

2 に答える 2

0

テーブル ID フィールドが自動インクリメントを設定していることを確認してから、次のように変更する必要があります。

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