Pergunta

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,%'

Grupo> 1-n> User2Group

Atividade> 1-n> Grupo 1-N

Tentando obter todos os grupos que um usuário não tenha adicionado à sua conta.

O que eu tenho até agora:

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

O que me tropeçar é o "on g.Id ! = ug.GroupID"

Foi útil?

Solução

É um pouco difícil quando eu não vejo as entidades e os mapeamentos, mas o

on g.Id != ug.GroupId

parte provavelmente poderia ser expressa em HQL por

from Group as g where g.id not in (select u.group.id from User u where u.id = ?)

O resto da cláusula WHERE deve ser fácil de adicionar.

mente que ele tem sido um tempo desde que eu trabalhei com HQL: -)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top