Что такое HQL-эквивалент этого SQL? - PullRequest
0 голосов
/ 11 сентября 2009
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-n> User2Group

Активность> 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);

Что меня споткнуло, так это "on.Id ! = ug.GroupID"

1 Ответ

1 голос
/ 11 сентября 2009

Немного сложно, когда я не вижу сущностей и отображений, но

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...