문제
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 <n-1 <사용자 Mn 관계
활동> 1-n> 그룹 1-n
사용자가 아직 계정에 추가하지 않은 모든 그룹을 얻으려고합니다.
내가 지금까지 가지고있는 것 :
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 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