few stuff: 1. why won't you map the table? falling back on native sql, IMO is worst practice when you're using a great tool that does everything for you
2. even if you decide not to map that table (if so, why?), you could use a regular criteria and just add a native sql criterion to a regular criteria - (see Expression.Sql i belive. there you could write some_field in (Select some_field from UnmappedTable Where ...)) then you fall back on native sql only in one of the where clauses and not the whole query, but again, why won't you just map the table? 3. i'm not sure, but from the top of my head i think there's something like SetRootEntity, but i might be off On Thu, Apr 8, 2010 at 6:02 PM, FrederikGheysels < [email protected]> wrote: > Additional Info: > - when I do not specify the DistinctRootEntity ResultTransformer, the > query returns instances of 'Prestation', however, multiple copies of > the same instance are present in the result. > > On 8 apr, 16:38, FrederikGheysels <[email protected]> > wrote: > > Hi all, > > > > I'm using NHibernate 2.1.2.400, and I'm having an issue with a an > > ISQLQuery query. > > > > The reason why I use an ISQLQuery here, is that this query uses a > > table for which I have no entity mapped in NHibernate. > > > > The query looks like this: > > > > ISQLQuery query = session.CreateSQLQuery ( > > "select p.*, price.* " + > > "from prestation p left outer join prestationprice price on > > p.PrestationId = price.PrestationId " + > > "where p.Id IN ( select id from prestationregistry where ..."); > > > > 'Prestationregistry' is the table that is not known by NHibernate > > (unmapped, so therefore the native SQL Query). > > > > my code continues like this: > > > > query.AddEntity ("p", typeof(Prestation)); > > query.AddJoin ("price", typeof(PrestationPrice)); > > > > query.SetResultTransformer (Transformers.DistinctRootEntity); > > > > var result = query.List(); > > > > So far so good. > > I expect that I'm given a list of 'Prestation' instances as a result > > of this query, since I declared 'Prestation' as being the root-object > > that has to be returned by the AddEntity method. > > I also expect that the PrestationPrices for each Prestation are > > eagerly loaded by this query (hence the AddJoin method). > > > > To my surprise, the List() method returns a collection of > > PrestationPrice instances instead of Prestation instances. > > How come ? Am I doing something wrong ? And if so, could you be so > > kind to tell me what I'm doing wrong ? > > Or, is this a bug ? > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<nhusers%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/nhusers?hl=en. > > -- You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/nhusers?hl=en.
