2008-08-23 11 views
1

Je développe une application web en utilisant NHibernate. Pouvez-vous me dire comment écrire un NHibernate requête pour la requête SQL suivante:(N) Hibernate Auto-Join

SELECT v1.Id 
FROM VIEW v1 
LEFT JOIN VIEW v2 ON v1.SourceView = v2.Id 
ORDER BY v1.Position 

Il est en fait une auto-join mais je ne sais pas comment écrire cela dans NHibernate. Disons que les noms des propriétés sont les mêmes que les noms des colonnes de la table.

Répondre

1

Vous pouvez simplement effectuer la sélection sur l'entité d'origine et faire l'association entre les deux objets "paresseux = faux". Tant que les entités sont mappées, les deux seront renvoyées et vous ne recevrez pas d'exception lazyloading en essayant d'accéder à l'objet.

Si vous ne souhaitez pas mapper "paresseux = faux", vous pouvez également parcourir les résultats et effectuer une sorte d'opération (par exemple, demander si elle est nulle, si (v1.AssocatedObject == null) { }) pour s'assurer que les données sont chargées pendant que la session est ouverte.

Mise à jour:

Je pense qu'il est en fait une meilleure que celle, NHibernateUtil.Initialise() qui peut initialiser une collection sans avoir à se promener à travers elle.