Quel est l'équivalent HQL de ce SQL?
-
05-07-2019 - |
Question
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,%'
Groupe > 1-n & Gt; User2Group & Lt; n-1 < Utilisateur relation m-n
Activité > 1-n & Gt; Groupe 1-n
Essayer d'obtenir tous les groupes qu'un utilisateur n'a pas encore ajoutés à son compte.
Ce que j'ai jusqu'à présent:
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);
Ce qui m’a fait trébucher, c’est le " on g.Id ! = ug.GroupID & ";
La solution
C’est un peu difficile quand je ne vois pas les entités et les mappages, mais le
on g.Id != ug.GroupId
une partie pourrait probablement être exprimée en HQL par
from Group as g where g.id not in (select u.group.id from User u where u.id = ?)
Le reste de la clause where devrait être facile à ajouter.
Notez que ça fait longtemps que je n'ai pas travaillé avec HQL: -)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow