Join con NH

15 views
Skip to first unread message

this.atos

unread,
Nov 9, 2012, 3:29:14 AM11/9/12
to nh...@googlegroups.com
Buongiorno, 

    per iniziare mi scuso per la banalità di questa richiesta, ma visto la mia inesperienza nell'uso di NH sto avendo alcuni inconvenienti lungo il percorso. Devo fare una semplice Join tra due tabelle, utilizzando NH 3.3.1.

    Come prima cosa ho creato le due classi che mi mappano ambo le tabelle del DB e i relativi file *.hbm.xml. Dal momento che il risultato che voglio avere è il seguente: 

select a.Colonna1, a.Colonna2, a.Colonna3, b.Colonna2 from TabellaA a left join TabellaB b on a.Colonna1 = b.Colonna1

    per risolvere la seguente query, utilizzando l'interfaccia ICriteria, come ho letto e studiato da documentazione, ho il seguente codice: 

ICriteria _query = _session.CreateCriteria(typeof(TabellaA), "a");
ICriterion _criterion = Expression.Eq("a.Colonna1", "b.Colonna1");
_query.CreateAlias(typeof(TabellaB).Name, "b", NHibernate.SqlCommand.JoinType.LeftOuterJoin, _criterion);

_query.SetProjection(
            Projections.ProjectionList()
            .Add(Projections.Property("Colonna1"), "Colonna1")
            .Add(Projections.Property("Colonna2"), "Colonna2")
            .Add(Projections.Property("Colonna3"), "Colonna3")
            .Add(Projections.Property("b.Colonna2"), "Colonna2"));

_query.SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof(ViewTemplate)));
IList<ViewTemplate> _list = _query.List<ViewTemplate>();


In aggiunta ho inserito la riga con il metodo SetResultTransformer per convertire il risultato in un oggetto di tipo ViewTemplate, per motivi di semplicità. 

Quando eseguo la query ottengo un Exception che mi dice: "could not resolve property: TabellaB of: della classe TabellaA".

Ora non capisco. La classe della TabellaA non ha la property TabellaB in quanto TabellaB è una classe e l'operazione di match della join è gestita dall'interfaccia ICriterion. Dove sbaglio ?


Grazie.
Reply all
Reply to author
Forward
0 new messages