Davy,

Thanks for the response. I had actually come across your blog post, which
was very helpful. However, your examples seem to use
Restrictions.EqProperty... but I don't have a visible "Id" column on
WorkflowTransition - just a direct reference back to it's WorkflowStage
parent?

Is there a way I can use that property instead?

Thanks

James

2009/3/15 Davy Brion <[email protected]>

> http://davybrion.com/blog/2008/10/querying-with-nhibernate/
>
> that has 2 examples of using subqueries
>
>
> On Fri, Mar 13, 2009 at 10:56 AM, James Crowley 
> <[email protected]>wrote:
>
>> hey everyone,
>>
>> I've been trying to track down some detailed examples of subqueries using
>> criteria (for either hibernate or nhibernate) but have failed miserably. If
>> there's any good place to look, please do let me know.
>>
>> Failing that... my query looks like this:
>>
>> ICriteria c = _queryService.Session.CreateCriteria(typeof
>> (Content),"content")
>>     .CreateAlias("WorkflowStage", "ws")
>>     .CreateAlias("Owner", "u")
>>     .CreateAlias("ws.TransitionsFromHere", "trn")
>>     .Add(Restrictions.Eq("ws.Active", false))
>>     .Add(Restrictions.Eq("u.Id", userContext.Identity.Id))
>>     .Add(Restrictions.In("trn.Role",
>> userContext.Identity.Roles.ToArray()));
>> ...
>> c.SetProjection(p);
>> c.SetResultTransformer(Transformers.AliasToBean(typeof(ContentView)));
>>
>> at the moment. The problem is that really I need an Exists() type query
>> for the last clause, because I only want a each Content element that has at
>> least one "trn.Role" that matches.
>>
>> I've tried doing this:
>>
>> DetachedCriteria rolesCriteria = DetachedCriteria.For(typeof
>> (WorkflowTransition),"trn")
>>     .Add(Restrictions.In("Role", userContext.Identity.Roles.ToArray()))
>>     .SetProjection(Projections.Property("Id"));
>>
>> ICriteria c = _queryService.Session.CreateCriteria(typeof
>> (Content),"content")
>>     .CreateAlias("WorkflowStage", "ws")
>>     .CreateAlias("Owner", "u")
>>     .Add(Restrictions.Eq("ws.Active", false))
>>     .Add(Restrictions.Eq("u.Id", userContext.Identity.Id))
>>     .Add(Subqueries.Exists(rolesCriteria));
>>
>> but I'm unsure how to "attach" the detached criteria so it's linked to the
>> content element. I've seen some examples using Restrictions.EqProperty...
>> but I don't have a visible "Id" column on WorkflowTransition - just a direct
>> reference back to it's WorkflowStage parent.
>>
>> Any advice or pointers would be much appreciated!
>>
>> Thanks
>>
>> James
>>
>>
>>
>
> >
>


-- 
James Crowley
Managing Director
Developer Fusion - Connecting developers worldwide

Developer Fusion Ltd | 58 Sandringham Close | Enfield, EN1 3JH
mob: 07986 624128 web: http://www.developerfusion.com/

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to