在Hibernate HQL更新查询中使用连接操作

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();

只是给了我一个"在字典中未找到给定的键"的错误。

是的,关系按预期工作,可以进行选择操作....

1个回答

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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接