nhibernate - Criteria API With clause in many-to-many relationship -


nhibernate 3 introduced clause criteria api. i'm trying use restrict join on many-to-many relationship , nhibernate applying additional join restriction linking table rather correct table.

i have many-to-many relationship between player , address , want return player , mailing address restricting address.ismailingaddress. restricting ismailingaddress in clause not return records not have mailing address (or no address @ all), need restrict in join. code below simplified , can't use hql.

the query:

var target = session.createcriteria<player>()     .setprojection(projections.property("playerid"))     .createalias("addresses", "ad", jointype.leftouterjoin, restrictions.eq("ad.ismailingaddress", true))     .add(restrictions.eq("lastname", "anonymous"))    .list(); 

generates sql:

select this_.playerid y0_   dbo.vplayerexisting this_        left outer join dbo.linkplayaddr addresses3_          on this_.playerid = addresses3_.playerid             , (ad1_.mailingaddressflag = 1 /* @p0 */)        left outer join dbo.vaddress ad1_          on addresses3_.addressid = ad1_.addressid             , (ad1_.mailingaddressflag = 'anonymous' /* @p1 */)  this_.name_last = @p2 

mailingaddressflag (the column that's mapped ismailingaddress) restricted in many-to-many linking table doesn't exist , lastname restriction applied in join address table. query issued of course database server raises exception.

is bug, unsupported or doing wrong?

var target = session.createcriteria<player>()     .createalias("addresses", "ad", jointype.innerjoin)     .add(restrictions.eq("lastname", "anonymous"))     .add(restrictions.eq("ad.ismailingaddress",true))     .list(); 

just inner join mailing address restriction on ismailingaddress?

should bring players (where lastname "anonymous") mailingaddress have address , address flagged ismailingaddress.


Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -