0

構成ファイルでuse_outer_joinオプションをtrueに設定しています。

マップされたdbテーブルもあります。SQLログで、外部キーの場合、hibernateがレコードごとに個別のselectを生成していることがわかりました。プライマリテーブルからデータを取得するために結合を使用していません。

忘れてしまったことはありますか?他に何が間違っている可能性がありますか?

ありがとう

4

2 に答える 2

1

はい、そのようなものです。マッピングファイルで外部結合を指定するだけでは不十分です。

外部結合を強制する場合は、HQLステートメントで指定する必要があります。例えば

from firstTable as a outer join fetch a.secondTable as b where ...
于 2012-04-17T09:28:17.000 に答える
0

リレーションシップマッピングを確認してください。デフォルトで何も指定されていない場合、子のプロキシが返され、そのプロパティにアクセスすると子がロードされます。別のSQLselectにロードされます。

コレクションマッピングでは「outer-join=true」を使用する必要があります。(構成でhibernate.use_outer_joinがtrueであり、コレクションマッピングにouter-join = "true"がある場合、hibernateのみが外部結合を生成します)。

于 2012-04-17T08:41:05.243 に答える