私はを使用しています。Hibernate(JPA)ダービーデータベース - 私のアプリケーションサーバーはJboss 6.0です。 50000人の従業員情報が入ったテーブルを事前に設定しておく必要があり、そのためにスタンドアロンのJDBCプログラムを使用しました。 私のアプリケーションからは、同じテーブルに新しい従業員情報を挿入する必要があります。そのとき、私はJPAを使用します(これはアプリケーションコンテナ内で実行されるためです)。Hibernateの自動生成シリアル番号の変更方法は?
マイEmployeeクラスは、エンティティBeanであり、「イド」欄適切なアウトHibernateの図は、プライマリキーのシリアル番号を実行するように「@GeneratedValue(戦略=オート)」注釈付きの主キーであることを(有しますすなわちId列)。
これで、Hibernateは、Employeeテーブルにすでにエントリがある場合でも、常にこの実行中のシリアルを "1"から開始するという問題があります。私はEntityManagerを使用して、新しいレコードを挿入しようとすると、アプリケーションから::(持続)このように、私はいつも「一意キーまたは主キー制約または一意索引で重複したキー値」のような制約違反エラーが発生します。 Hibernateは、私はすでにIDを持つそのテーブルのエントリを持っているようID = 1で新しいエントリを挿入しようとするため これがある= 1
私の質問は
a)はどのように私は更新することができます休止状態であります'Id'列のシリアル番号が適切に調整されるようにキャッシュを設定しますか? DBからDBに変わることがわかりますが、可能でしょうかすべてにありますか?
b)これを達成する他の方法はありますか?
c)一括挿入(つまり事前投入)を実行するスタンドアロンのJPAプログラムを作成してJbossアプリケーションを起動すると、「実行中のシリアル」を決定できなくなります。任意の提案を事前に
おかげで、 - kuntal
優秀!できます ! – javauser71
私はEmployeeテーブルに値を設定しなければならないので、initialValueを使用しませんでした。したがって、initialValueはそこにある従業員エントリの数にする必要があります。だからEmployeeテーブルに値を設定した後、SEQUENCE_TABLEを適切な数(たとえば100)で更新しました。それから私はjboss-appを始めました。新しいレコードを挿入すると、idは101で始まり、これは私が期待していたものです。正しい解決に感謝します。乾杯! – javauser71
こちらも同様の例ですhttp://ja.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing – javauser71