2009-10-27 74 views
4
string query = "update User u set u.PointsTotal = 1 join u.Rounds r where r.RoundId = :round and (r.Row1 & :val) > 0"; 

NHibernateSession.CreateQuery(query) 
    .SetByte("val", (byte)val) 
    .SetInt32("round", roundId) 
    .ExecuteUpdate(); 

只是给了我“给定的密钥不在字典中”。在Hibernate中使用HQL更新查询

是的,关系正常工作,可以做的选择....

回答

5

好的解决了这一,好像你必须做一个子查询......

string query = "update User u set u.PointsTotal = 1 where u.Id in (select u2.Id from User u2 join u2.Rounds r where r.RoundId = :round and (r.Row1 & :val) > 0)"; 

NHibernateSession.CreateQuery(query) 
    .SetByte("val", (byte)val) 
    .SetInt32("round", roundId) 
    .ExecuteUpdate(); 
+0

艾柯!我一直在寻找这两天!非常感谢! :-) – zakmck 2013-04-08 14:47:18