2009-09-11 32 views
0
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,%' 

組> 1-N> User2Group < n-1個<用戶 MN關係這個SQL的HQL等效物是什麼?

活動> 1-N> 第1組 - 正

試圖讓用戶有不是所有的組已經添加到他們的帳戶。

我到目前爲止有:

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); 

發生了什麼我絆倒的是「!上g.Id = ug.GroupID」

+0

我最終什麼了:VAR組= repository.SimpleQuery (啓動,顯示,「從集團爲g,其中g.Type = ?和g.Activity.Lineage類似於?和g.CreatedBy.Id!=?和g.Id不在(從g中選擇g.Id作爲g加入g。用戶爲u,其中u.Id =?)「,Group。 GroupType.Deleted,string.Format(「{0}%」,沿襲),currentUser.Id,currentUser.Id); – rball 2009-09-12 06:06:56

回答

1

這是一個有點硬,當我做不看到實體和映射,但

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工作:-)

+0

我試圖在Ayende的QueryBuilder中沒有使用它,它沒有工作,也沒有在HQL中嘗試。我去了SQL並得到了,但我認爲你的HQL也可能工作。我會試一試。謝謝! – rball 2009-09-11 14:25:35

相關問題