-2

挿入のためにいくつかの選択コマンドを実行しながら、複数のエンティティを永続化しようとしています。挿入前に 3 つの選択コマンドがあるとします。これらのすべての選択コマンドは、挿入操作の前にもう一度実行されます。これに答えることができますか?

4

1 に答える 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 に答える