構成ファイルでuse_outer_joinオプションをtrueに設定しています。
マップされたdbテーブルもあります。SQLログで、外部キーの場合、hibernateがレコードごとに個別のselectを生成していることがわかりました。プライマリテーブルからデータを取得するために結合を使用していません。
忘れてしまったことはありますか?他に何が間違っている可能性がありますか?
ありがとう
はい、そのようなものです。マッピングファイルで外部結合を指定するだけでは不十分です。
外部結合を強制する場合は、HQLステートメントで指定する必要があります。例えば
from firstTable as a outer join fetch a.secondTable as b where ...
リレーションシップマッピングを確認してください。デフォルトで何も指定されていない場合、子のプロキシが返され、そのプロパティにアクセスすると子がロードされます。別のSQLselectにロードされます。
コレクションマッピングでは「outer-join=true」を使用する必要があります。(構成でhibernate.use_outer_joinがtrueであり、コレクションマッピングにouter-join = "true"がある場合、hibernateのみが外部結合を生成します)。