Question

Essayer de faire une requête un peu plus complexe et penser que HQL serait meilleur pour le travail. Utilisation de 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 '?%'

Je suppose que je pourrais aussi simplement utiliser le code SQL (?), mais je ne sais pas vraiment comment charger mes objets de cette façon.

Était-ce utile?

La solution

Cela dépend de la nature de vos entités et de l’objet principal qui vous tient à cœur. Vous semblez les tirer tous au lieu d'une seule entité. Je vais supposer que le groupe est l'entité de cet exemple

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

Cela devrait vous aider à démarrer. Mais sans connaître votre structure, je prends une photo dans le noir.

Autres conseils

Si vous avez une connexion plusieurs à plusieurs (table User2Group), vous devez commencer par cette connexion et effectuer toutes les jointures sur cette table. Si les mappages sont corrects, la requête ci-dessous fonctionnera comme un charme.

from User2Group as ug
join ug.User as u
join ug.Group as g
where u.Id = :userId and g.Activity.Lineage like '?%'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top