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

nil*_*zen 4 nhibernate join hql

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();
Run Code Online (Sandbox Code Playgroud)

只是告诉我"给定的密钥不在字典中."

是的,关系按预期工作,可以做选择....

nil*_*zen 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();
Run Code Online (Sandbox Code Playgroud)