Pergunta

Tentando fazer um pouco mais consulta complexa, e pensou que HQL seria melhor para o trabalho. Usando nHibernate.

SELECT * FROM [Group] g 
  INNER JOIN [User2Group] ug on g.Id = ug.GroupId
  INNER JOIN [User] u ON u.Id = ug.UserId
  INNER JOIN Activity a on g.ActivityId = a.Id
WHERE u.Id = ? AND a.Lineage LIKE '?%'

Eu acho que eu também poderia usar apenas o SQL, bem como (?), Mas não tenho certeza realmente como carregar os meus objetos dessa forma.

Foi útil?

Solução

Isso depende de quais são suas entidades são e que o objeto principal o que importa é. Você parece estar puxando-os todos em vez de apenas uma entidade. Eu estou indo supor Group é a entidade a partir deste exemplo

from MyApp.Entities.Group as g
join fetch g.Users as u
join fetch g.Activity as a
where u.Id = :userId and a.Lineage like '?%'

Isso deve começar. Mas sem saber a sua estrutura, estou tomando um tiro no escuro.

Outras dicas

Se você tem muitos-para-muitos relação (tabela User2Group) você deve começar a partir dele e fazer toda a junta nesta tabela. Se você tem mapeamentos corretos, a consulta a seguir vai funcionar como um encanto.

from User2Group as ug
join ug.User as u
join ug.Group as g
where u.Id = :userId and g.Activity.Lineage like '?%'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top