まず、forum.hibernate.orgにアクセスしようとしている他の人。 私はしばらく試しています。それを信じることはできません。Nhibernate - WebアプリケーションにHasManyコレクションを持つエンティティをロードする
私はNHibernateを初めて使っています。簡単に行く。
私はMVCアプリケーションを持っており、レシピ と呼ばれるエンティティを持ち、HasManyコレクションのコメント、成分、 およびImagesを持っています。
MVCコントローラの動作では、最初の レシピをロードしてホームページにロードします。
私は以下のHQLを使用しています。 イメージを先読みして、最初のイメージを表示できるようにします。しかし私の最初の レシピは3つの画像を持っているので、 レシピの3つの行がクエリに表示されます。
string sql = "from Recipe r " +
"left join fetch r.Images " +
"inner join fetch r.User " +
"where r.Completed!=0";
IList<Recipe> recipes = (IList<Recipe>)session.CreateQuery(sql)
.SetMaxResults(20)
.List<Recipe>();
イメージがロードされた最初の20個のレシピを読み込むにはどのような方法を使用しますか? Iストレスレイジーロードではなく画像をプリフェッチしたいのですが、リストがコントローラアクションにロードされているため、ユーザーコントロールで列挙したときにイメージをロードできないためです。
マルコム
あなたはこの作品か?私はそれがないと確信しています。行数を正しく取得できないような結合です。 (私は解決策はわかりません) – Rashack
実際に動作します。ありがとう! – Malcolm
重複した行は、左側の結合に由来します。 NHibernateは、DistinctRootEntityトランスフォーマが設定されている場合、Recipeモデルの主キーを使用して重複行をフィルタリングします。ただし、データベースレベルではなく行がフェッチされた後で、フィルタリングがメモリー内で行われることに注意してください。 –