Frage

Der Versuch, ein wenig komplexe Abfrage zu tun, und dachte, dass HQL würde für den Job besser sein. Mit 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 '?%'

Ich glaube, ich könnte auch einfach die SQL verwenden als auch (?), Aber nicht sicher, ob wirklich, wie meine Objekte zu laden, bis auf diese Weise.

War es hilfreich?

Lösung

Es würde davon abhängen, was Ihre Einheiten sind und was die primäre Aufgabe, die Sie interessieren ist. Sie scheinen sie alle statt nur eine Einheit zu ziehen. Ich werde Gruppe zu übernehmen, um die Einheit aus diesem Beispiel

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

Das sollte Ihnen den Start. Aber mit aus Ihrer Struktur zu wissen, ich bin ein Schuss im Dunkeln nehmen.

Andere Tipps

Wenn Sie many-to-many-Verbindung (User2Group Tabelle) haben, sollten Sie von ihm beginnen und machen alle auf diesem Tisch verbindet. Wenn Sie richtige Zuordnungen haben, unter der Abfrage wie ein Zauber funktioniert.

from User2Group as ug
join ug.User as u
join ug.Group as g
where u.Id = :userId and g.Activity.Lineage like '?%'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top