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 & ";

Était-ce utile?

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
scroll top