responses inline On May 11, 1:29 pm, Brian Berns <[email protected]> wrote: > "design time settings are applied first, then run time settings are > applied." > > Thanks for the response. I see that this is true, but what I'd like to > know is a) Why, and b) Can I override this behavior? a) because this is the way NH was designed. b) not that I'm aware of > > It seems obvious to me that users would usually want the Master-level > settings to override the Detail-level settings, regardless of which > ones are specified at run-time vs. design-time. NH doesn't distinguish between master and detail. the behavior you want is possible, however you need to configure you mappings and queries differently. The more you specify within the mapping the more rigid your domain. flexibility is achieved by using the default mapping settings within NH and configuring queries at runtime. > > -- Brian > > On May 10, 1:18 pm, Jason Meckley <[email protected]> wrote: > > > > > the problem isn't NH the problem is how you have configured NH. design > > time settings are applied first, then run time settings are applied. > > you have also configured your Details to be eagerly loaded. therefore > > when you select Master, Details will be selected using an outer-join > > and the records will be sorted by date, then any other properties you > > choose. > > > I would remove the ordering and lazy loading from the mapping and > > apply this to the query at runtime. you can reduce the duplication by > > using either a named query or subclassing DetachedCriteria. > > > "When I fetch masters, I want the details to come along with them > > eagerly. > > ... > > I'm very tempted to throw in a "duh!" here and rant about the > > perversity of NHibernate's need to fetch masters and details in a > > single join query, but I will resist." > > eager loading means an outer join > > lazy is additional selects. > > > On May 10, 11:52 am, Brian Berns <[email protected]> wrote: > > > > I have two entities called Master and Detail. When I fetch masters, I > > > want the details to come along with them eagerly. This is a perfect > > > case for DistinctRootEntityResultTransformer. > > > > The details are always sorted by datetime, so I mark this on the > > > association in the mapping file: > > > > <bag name="Details" order-by="Date" lazy="false"> > > > <key column="MasterFK"/> > > > <one-to-many class="Detail"/> > > > </bag> > > > > When I fetch the masters, I want to sort them by name, so I specify > > > this when creating the criteria: > > > > session.CreateCriteria<Master>() > > > .SetFetchMode("Details", FetchMode.Join) > > > .SetResultTransformer(new > > > DistinctRootEntityResultTransformer()); > > > .AddOrder(Order.Asc("Name")) > > > .List<Master>(); > > > > The problem with this is that the results come back sorted first by > > > Detail.Date, then secondly by Master.Name. Here's the SQL: > > > > ORDER BY details2_.Date, this_1_.Name asc > > > > This is clearly not what I want. (I'm very tempted to throw in a > > > "duh!" here and rant about the perversity of NHibernate's need to > > > fetch masters and details in a single join query, but I will resist. > > > I... will... resist...) > > > > So, how do I tell NHibernate to sort the masters before sorting the > > > details? > > > > -- > > > 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 > > > athttp://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 > > athttp://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 > athttp://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.
