Hi,

Is there a way to restrict the join performed to populate a set using
a dynamic variable or a parameter. The set mapping allows me to
specify a "where" attribute but I need it to look something like this:

<set name="Categories" table="Categories" where="CategoryId = :id" >
...
</set>

rather than having a static value.

If I add this condition as a restriction to the overall criteria, the
restriction gets added to the where clause of the query rather than as
a condition of the join. This is not quite the same thing and not what
I want.

session.CreateCriteria(typeof (Assessment))
                .CreateCriteria("Categories", JoinType.LeftOuterJoin)
                .Add(Restrictions.Eq("CategoryId", 1))
                .List();

gives me something like:

SELECT ...
FROM   Assessment this_
       left outer join Categories impactcate1_
         on this_.AssessmentId = impactcate1_.AssessmentId
WHERE  impactcate1_.CategoryID = 1

whereas what I need is:

SELECT ...
FROM   Assessment this_
       left outer join Categories impactcate1_
         on this_.AssessmentId = impactcate1_.AssessmentId
            and  impactcate1_.CategoryID = 1

I can't think of any way round this at the moment, so any ideas would
be appreciated.

Thanks,

Julian.

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