Что такое HQL-эквивалент этого SQL?
-
05-07-2019 - |
Вопрос
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-н & Gt; User2Group & Lt; n-1 < пользователь м-н отношения
Активность > 1-н & Gt; группа 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 "
Решение
Немного сложно, когда я не вижу сущности и сопоставления, но
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: -)
Не связан с StackOverflow