J2SEアプリケーションでJPA(OpenJPA)を使用するエントリリストのコンテンツでテーブルを更新しようとしています:新しいエントリを追加するか、既存のエントリを存在するリストに置き換えようとしています。JPA EntityExistsExceptionマージ時に重複するエントリ?
1)これを実行する最善の方法は何ですか?私は数百、同じトランザクション内でマージを実行したいことのために
...(リスト内の項目のいくつかは、同じIDを持つindenticalてもよい)
HSQLDBを使用したとき、正常に動作するよう、しかし、データベースとしてMySQLを使用する場合、私はこの例外を受け取ります: org.apache.openjpa.persistence.EntityExistsException:重複したエントリ
2)何らかの理由はありますか?
コードはシンプルで、このようなものです:
EntityManager em = emfactory.createEntityManager();
em.getTransaction().begin();
// update messages
for (Message msg : messages) {
Entry e=new Entry(msg.getId(), msg.getText(),msg.getDate());
em.merge(e);
}
em.getTransaction().commit();
em.close();
おかげ
の世代の戦略を持っています。もしそうなら、これを試してトラブルシューティングをして、probの原因となっているmsgを見つけることができます。マージの下のforでコミットを移動します。 try/catchでコミットを囲み、catchのどこかにブレークポイントを設定します。また、Messageエンティティの一意のフィールドは何ですか? – AR3Y35