2009-10-27 7 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(); 

Juste me donne "La clé donnée n'était pas présente dans le dictionnaire."Utilisation d'une jointure dans la requête de mise à jour Hibernate HQL

Et oui, les relations fonctionne comme prévu, peuvent faire .... choisit

Répondre

5

Ok résolu celui-ci, semble que vous avez à faire une sous-requête ...

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

Yike! Je l'ai cherché pendant deux jours! Merci beaucoup! :-) – zakmck

Questions connexes