Here are some additional examples of using DetachedCriteria with Nhibernate.
http://davybrion.com/blog/2008/06/data-access-with-nhibernate/

On Thu, Jun 18, 2009 at 1:58 AM, Markus Zywitza <[email protected]>wrote:

> Detached criteria can be perfectly used to query associations. They are
> detached because you can create them without a session (detached) and attach
> them to a session later.
> Try:
>
> var crit =
> DetachedCriteria.For<Car>().CreateCriteria("engine").Add(Expression.Eq("NumberOfCylinders",8));
>
> -Markus
>
> 2009/6/17 csharp <[email protected]>
>
>
>> Any chance castle will add some type of association criteria or query
>> object so instead of using detached criteria, an association can be
>> declared and queries against in instance like my example code above
>> (car, engine, etc - using an association query to query the engine
>> object of a car object?
>>
>>
>>
>> On Jun 17, 12:04 pm, Markus Zywitza <[email protected]> wrote:
>> > I like HQL much better than Criteria, despite of the missing
>> IntelliSense.
>> > HQL is more powerful in regard to joins (Criteria cannot join on
>> unrelated
>> > entities) and gives a more compact and concise view of the actual query.
>> > Only when I had to dynamically build query strings, I use Criteria
>> instead.
>> > -Markus
>> >
>> > 2009/6/17 csharp <[email protected]>
>> >
>> >
>> >
>> >
>> >
>> > > I have set lazy=false as well, both on classes and collection
>> > > properties.
>> >
>> > > with my model, when i load a root 99% of the time i will be using
>> > > every object under the root, so I want to make it as optimized as
>> > > possible knowing i will be using the objects.
>> >
>> > > it looks like detached criteria is the way to go.  I believe i read
>> > > that HQL came after criteria queries and is the preferred way to do
>> > > things.
>> >
>> > > i also may have misquoted above, according to
>> > >https://www.hibernate.org/315.html
>> > > "HQL queries do not respect any fetch="join" defined in the mapping
>> > > document"
>> >
>> > > I use fetch="select" though, so it looks like HQL queries would be
>> > > sufficient.
>> >
>> > > Thanks Markus for answering both my posts :)
>> >
>> > > On Jun 17, 10:15 am, Markus Zywitza <[email protected]> wrote:
>> > > > The FetchEnum just specifies how it is loaded, not when. For this
>> you
>> > > should
>> > > > set lazy=false for all entities within the aggregate. With
>> FetchEnum, you
>> > > > just influence the SQL created by NHibernate, which should be
>> irrelevant
>> > > to
>> > > > the model.
>> >
>> > > > -Markus
>> >
>> > > > 2009/6/17 csharp <[email protected]>
>> >
>> > > > > I am doing it this way because I am using DDD principles.  I
>> choose to
>> > > > > load my entire aggregate root at once, just a personal preference.
>> >
>> > > > > On Jun 17, 2:20 am, Markus Zywitza <[email protected]>
>> wrote:
>> > > > > > To be honest, I'm using AR now for 3 years, but I never
>> specified the
>> > > > > Fetch
>> > > > > > property on any of my collections. To me, it smells a bit like
>> > > premature
>> > > > > > optimization. If you worry on performance, you should rather be
>> picky
>> > > > > about
>> > > > > > when to use lazy loading and when not to use it (n+1). This can
>> be
>> > > done
>> > > > > both
>> > > > > > in HQL and Criteria.
>> >
>> > > > > > As for DetachedCriteria:
>> >
>> > > > > > ActiveRecordMediator<T> has overloads of FindAll, FindFirst and
>> > > FineOne
>> > > > > > taking DetachedCriteria.
>> > > > > > -Markus
>> >
>> > > > > > 2009/6/17 csharp <[email protected]>
>> >
>> > > > > > > I do not want to use HQL as I read that it does not respect
>> the
>> > > > > > > FetchEnum I specify in the property attributes.
>> >
>> > > > > > > to query an association - random example :
>> >
>> > > > > > > class car
>> > > > > > >  -engine
>> > > > > > >  -transmission
>> > > > > > >  -numberOfWheels
>> > > > > > >  -etc
>> >
>> > > > > > > class engine
>> > > > > > >  -number of cylinders
>> >
>> > > > > > > class transmission
>> > > > > > >  -auto?
>> > > > > > >  -type
>> >
>> > > > > > > I read that it looks like using detached criteria is the
>> > > recommended
>> > > > > > > approach to query properties of the engine object inside the
>> car
>> > > > > > > object, yet Hibernate's docs say this about detached criteria:
>> >
>> > > > > > > The DetachedCriteria class lets you create a query outside the
>> > > scope
>> > > > > > > of a session, and then later execute it using some arbitrary
>> > > Session.
>> >
>> > > > > > > Also, they have a specific section regarding querying
>> associations:
>> >
>> > >http://docs.jboss.org/hibernate/stable/core/reference/en/html/querycr.
>> > > > > ..
>> >
>> > > > > > > Does Castle have a way to query associations using ICriterion?
>> >
>> > > > > > > Alternatively, did i misread that HQL does not respect the
>> > > FetchEnum I
>> > > > > > > specify in the property attributes
>> >
>> > > > > > > I don't mind one way or another, just wanted to see what the
>> pros
>> > > and
>> > > > > > > cons were. Does HQL introduce any limitations at all?- Hide
>> quoted
>> > > text
>> > > > > -
>> >
>> > > > > > - Show quoted text -- Hide quoted text -
>> >
>> > > > - Show quoted text -- Hide quoted text -
>> >
>> > - Show quoted text -
>>
>>
>
> >
>


-- 
David J. Driscoll

www.EnduroTracker.com
EnduroTracker.BlogSpot.com

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" 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/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to