質問

もう少し複雑なクエリを実行しようとし、HQLの方が仕事に向いていると考えました。 nHibernateを使用します。

SELECT * FROM [Group] g 
  INNER JOIN [User2Group] ug on g.Id = ug.GroupId
  INNER JOIN [User] u ON u.Id = ug.UserId
  INNER JOIN Activity a on g.ActivityId = a.Id
WHERE u.Id = ? AND a.Lineage LIKE '?%'

SQLを使用することもできます(?)が、そのようにオブジェクトをロードする方法が実際にはわからない

役に立ちましたか?

解決

それはあなたのエンティティが何であるか、そしてあなたが気にする主なオブジェクトが何であるかに依存します。 1つのエンティティではなく、それらをすべてプルしているようです。 Groupがこの例のエンティティであると想定します

from MyApp.Entities.Group as g
join fetch g.Users as u
join fetch g.Activity as a
where u.Id = :userId and a.Lineage like '?%'

これで開始できます。しかし、あなたの構造を知らずに、私は暗闇の中で撮影しています。

他のヒント

多対多の接続(User2Groupテーブル)がある場合は、その接続から開始して、このテーブルですべての結合を行う必要があります。正しいマッピングがあれば、以下のクエリはチャームのように機能します。

from User2Group as ug
join ug.User as u
join ug.Group as g
where u.Id = :userId and g.Activity.Lineage like '?%'
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top