Domanda

Sto provando a fare una query un po 'più complessa e ho pensato che HQL sarebbe stato meglio per il lavoro. Utilizzando 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 '?%'

Suppongo che potrei anche usare anche l'SQL (?), ma non sono sicuro di come caricare i miei oggetti in quel modo.

È stato utile?

Soluzione

Dipenderebbe dalle tue entità e dall'oggetto principale a cui tieni. Sembra che li stia tirando tutti invece di una sola entità. Presumo che il gruppo sia l'entità da questo esempio

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

Questo dovrebbe iniziare. Ma senza conoscere la tua struttura, sto facendo uno scatto al buio.

Altri suggerimenti

Se si dispone di una connessione molti-a-molti (tabella User2Group), è necessario iniziare da essa e creare tutti i join in questa tabella. Se hai mappature corrette, la query qui sotto funzionerà come un incantesimo.

from User2Group as ug
join ug.User as u
join ug.Group as g
where u.Id = :userId and g.Activity.Lineage like '?%'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top