私は古い「古典的なASP」アプリケーションをJ2EE/Hibernateに移行しようとしています。私はHQLにこのような何かを表現するにはどうすればよいハイバーネーションのグループ化
SELECT parent.id, parent.name, parent.column1, count(child.id) AS no_of_children
FROM parent
INNER JOIN child ON child.parent_id = parent.id
GROUP BY parent.id, parent.name, parent.column1
: 私はSQL文の次のタイプに問題がありますか?私は子供をコレクションとして(many-to-oneを使って)マップし、コレクションのサイズから子の数を取得しようとしましたが、Hibernateは各親に対して個別にすべての "子"エンティティをロードしなければなりません。
この結果、1ではなく約1000個のDBクエリが実行され、すべてのパフォーマンス上の問題が発生します。
これを回避する手段はありますか?親エンティティであるHQL
FROM Parent GROUP BY Parent.id, Parent.name, Parent.column1
へ
私は完全にわからないんだけど、私は参加すると思う/として明示的に書くべきでした:「左の参加フェッチparent.Children "を呼び出すと、Hibernateにjoinを介してコレクションをプリロードするよう指示します。 – LorenzCK