2

異なるキー値を持つレコードをコピーしたいと思います。そうするための最良の方法は何ですか?プレーンSQLでは、次のようにします。

insert into tableX values (x1,x2,x3,x4,x5) select 2,T1.x2,T1.x3,T1.x4,T1.x5 from tableX T1

(x1 は私の主キーです)。このコードをエンティティ内@NamedQueryorg.eclipse.persistence.exceptions.JPQLException書き込もうとしましたが、書き方を検索した後、このSQLを内部に書き込めないことがわかりましたNamedQuery-それは正しいですか?

また、tableX を表すオブジェクト リストをループして、em.find()作成または作成したすべてのオブジェクトに対して新しいオブジェクトを挿入してから挿入しようとしましem.persistたが、それは非効率的な方法のようです。(find を使用する場合、オブジェクトごとに選択を行うため、2000 レコードのリストがある場合、2000 選択を作成してから新しいキー値を挿入するのは意味がありません)。

だから私の質問は、すべてのレコードのコピーを実装する最良の方法は何ですか? また、例外が発生した場合、または何か問題が発生した場合は、ロールバックして、データベース テーブル内のレコードの一部しか保持しないようにします。

前もって感謝します。

4

1 に答える 1