挿入のためにいくつかの選択コマンドを実行しながら、複数のエンティティを永続化しようとしています。挿入前に 3 つの選択コマンドがあるとします。これらのすべての選択コマンドは、挿入操作の前にもう一度実行されます。これに答えることができますか?
質問する
652 次
1 に答える
1
問題を解決しました、これが私の解決策です、他の誰かを助けるでしょう
INSERT の前に 2 回目の SELECT を防ぐには、Session.load()
またはを使用します。EntityManager.getReference()
User u = new User();
u.setUserStatusType( session.load(UserStatusType.class, new Long(id));
session.persis(u);
このsession.load()
メソッドは、最初は何もロードしません。オブジェクトのプロキシを作成し、データベースへのヒットを回避するだけです。
ここで渡された id パラメーターは、session.load()
以前に起動した select sql からのものであり、私の懸念は、休止状態が行っている同じ sql ステートメントをもう一度取得していたことでした。今、負荷メソッドを使用して、休止状態フレームワークが同じ選択 sql を再度起動するのを停止しましたそして今、ハイバネートが自動的に行っていた余分な文ではなく、1つの選択文だけが起動されています。
于 2012-06-15T09:36:08.163 に答える