Hibernate を使用して、テーブルから約 1 億行を取得しようとしています。内部に料金のコレクションを含む永続エンティティ Item があります (別の永続エンティティ)。結果を反復処理してすべてのオブジェクトの料金にアクセスすることを考えると、n+1 の問題を回避するために熱心に料金を取得したいと考えています。
また、これを Provider という別のテーブルに結合したいことにも言及する必要があります (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();
私の Order クラスには、Provider フィールドと Item フィールドが含まれています。次のエラーが表示されます。
原因: org.hibernate.QueryException: クエリは結合フェッチを指定しましたが、フェッチされた関連付けの所有者が選択リストに存在しませんでした
私はアイテム(熱心に取り出された料金で)とプロバイダーを含む注文のスクロール可能なリストになりたいと思います。