2009-09-11 2 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,%' 

Group> 1-п> User2Group < п-1 < Пользователь млн отношенияЧто такое эквивалент HQL этого SQL?

активность> 1-п> Группа 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

Что я закончил с: вар групп = repository.SimpleQuery (старт, шоу, «из группы в г где g.Type = ? и g.Activity.Lineage как? и g.CreatedBy.Id! =? и g.Id не в (выберите g.Id из Group as g join g.Users as u где u.Id =?) ", Group. GroupType.Deleted, string.Format ("{0}%", lineage), currentUser.Id, currentUser.Id); – rball

ответ

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

Я пытался не в QueryBuilder от Ayende, и он не работал и не пробовал его в HQL. Я пошел на SQL и получил это, но я думаю, что ваш HQL также может работать. Я попробую. Благодаря! – rball

Смежные вопросы