質問

SELECT *
FROM [Group] g
INNER JOIN User2Group ug
    **on g.Id != ug.GroupId**
INNER JOIN [Activity] a
    on a.Id = g.ActivityId
WHERE g.UserId != 2
AND a.Lineage like '0,1,%'

グループ<!> gt; 1-n <!> gt; User2Group <!> lt; n-1 <!> lt;ユーザー m-n関係

アクティビティ<!> gt; 1-n <!> gt;グループ 1-n

ユーザーがまだアカウントに追加していないすべてのグループを取得しようとしています。

これまでのところ:

var groups = repository.SimpleQuery<Group>("from Group as g join fetch g.Users as u join fetch g.Activity as a where g.Type != ? and a.Lineage like ? and g.CreatedBy.Id != ?", Group.GroupType.Deleted, string.Format("{0}%", lineage), currentUser.Id);

つまずいたのは<!> quot; on g.Id != ug.GroupID <!> quot;

役に立ちましたか?

解決

エンティティとマッピングが表示されない場合は少し難しいですが、

on g.Id != ug.GroupId

おそらくHQLで次のように表現できます

from Group as g where g.id not in (select u.group.id from User u where u.id = ?)

残りのwhere節は簡単に追加できるはずです。

HQLで作業してからしばらく経っていることに注意してください:-)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top