Pregunta

Intentando hacer una consulta un poco más compleja, y pensé que HQL sería mejor para el trabajo. Utilizando 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 '?%'

Supongo que también podría usar el SQL también (?), pero no estoy seguro de cómo cargar mis objetos de esa manera.

¿Fue útil?

Solución

Dependería de cuáles sean sus entidades y de cuál sea el objeto principal que le importa. Pareces estar tirando de todos en lugar de una sola entidad. Voy a asumir que Grupo es la entidad de este ejemplo

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

Eso debería ayudarte a empezar. Pero sin conocer su estructura, estoy tomando una foto en la oscuridad.

Otros consejos

Si tiene una conexión de muchos a muchos (tabla User2Group), debe comenzar desde ella y hacer todas las uniones en esta tabla. Si tiene las asignaciones correctas, la consulta a continuación funcionará como un 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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top