Hibernateを使用してテーブルから約1億行を取得しようとしています。私は内部のフィーのコレクションを含む永続化エンティティアイテムを持っています(別の永続化エンティティ)。私がをに返すと、すべてのオブジェクトの料金にアクセスし、n + 1の問題を避けるために熱心に手数料を取っていきたいと考えています。HibernateでScrollableResultsを使ってコレクションを取得しようとしています。
また、私はプロバイダ(1対1のマッピングが、外部キー)と呼ばれる別のテーブルにそれを参加したいことを言及する必要があります。私は試しました:
String query = "select new " + Order.class.getName()
+ "(i, p) from Item i left join fetch i.fees f, Provider p where "
+ "p.factoryId=i.factoryId and p.factoryRef=i.factoryRef";
return session.createQuery(query).scroll();
My Orderクラスには、ProviderフィールドとItemフィールドが含まれています。私はとプロバイダ(即時にフェッチ手数料で)項目が含まれている注文のスクロール可能なリストで終わるしたい
Caused by: org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list
:私はこのエラーを取得します。
この回答は正しいと思います。もしそうなら、 'Order'を作るのではなく' List'を返すようにクエリを変更して 'Item'sを実際にフェッチしていることをHibernateに知らせることができます。これで、 'Order'を手動で作成する必要があります。 –