Domanda

Sto sviluppando un'applicazione web utilizzando NHibernate.Puoi dirmi come scrivere una query NHibernate per la seguente query SQL:

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

Fondamentalmente è un collegamento automatico ma non so come scriverlo in Hibernate.Diciamo che i nomi delle proprietà sono gli stessi dei nomi delle colonne della tabella.

È stato utile?

Soluzione

Potresti semplicemente eseguire la selezione sull'entità originale e rendere l'associazione tra i due oggetti "pigro = falso".Finché le entità sono mappate, verranno restituite entrambe e non riceverai un'eccezione di lazyloading quando tenti di accedere all'oggetto.

Se non vuoi mappare "lazy=false", puoi anche scorrere i risultati ed eseguire qualche tipo di operazione (come chiedere se è null;if(v1.AssocatedObject == null){}) per garantire che i dati vengano caricati mentre la sessione è aperta.

Aggiornamento:

Penso che in realtà ce ne sia uno migliore di quello in, NHibernateUtil.Initialise() che può inizializzare una raccolta senza doverla esplorare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top