バックグラウンド
id、imageId、propertyId列のテーブルがあります。
単一のプロパティに関連付けられた多くの画像が存在する可能性があり、単一の画像に関連付けられた多くのプロパティが存在する可能性があります。
imageId - many-to-many - propertyId
propertyIdのリストがあり、 Hibernateを使用してすべてのpropertyIdに関連付けられているすべての画像を調べたいと思います。
問題。
ちょうど今、一度に1つのプロパティを選択し、Criteria APIを使用して、このpropertyIdに関連付けられているすべてのimageIdを検索し、imageIdのリストを取得します。次のクエリでこのimageIdのリストを使用して、
select imageIds where imageId in (imageIds obtained in previous step) where propertyId = x
したがって、事実上、DBにヒットするクエリの数はpropertyIdの数と等しくなります。これは良い解決策ではないと思います。データベースにn回アクセスする必要があり、Detached Queryを使用してみましたが、成功しませんでした。より良い解決策はありますか?
また、最終的にimageIdのリストを取得したとき、それをユーザーセッションに保存してページ分割することをお勧めします(結果の数を考慮しないでください)。または、プロセス全体を繰り返すことをお勧めします。ページネーションの目的ですべてDBに保存することを検討しますか?