2009-04-15 126 views
1

我試圖複製這個查詢從MySQL到HQL: UPDATE users u,mines m SET u.mana = u.mana + COALESCE((SELECT SUM(m.mana_rate )FROM地雷米WHERE m.user_id = u.id),0)休眠:更新總結從其他表

簡單地做這在HQL: 更新用戶U設定u.mana = u.mana +(選擇聚結(總和(m.manaRate ),0)從礦井m,其中m.userId = u.id)

給出以下錯誤: 異常在線程 「主」 org.hibernate.hql.ast。 QuerySyntaxException:意外的AST節點:query [更新mm.user.User u set u.mana = u.mana +(選擇coalesce(sum(m.manaRate),0)from mm.map.buildings.mines.Mine m其中m .userId = u.id)]

我是Hibernate的新手,所以我不知道從哪裏開始,以及錯誤的含義。 如果這是不可能的,我可以在Hibernate中編寫一個本地MySQL查詢嗎?

編輯:這個問題似乎是在「u.mana = u.mana +」,因爲當我只是做u.mana =(選擇...的查詢工作就好

+0

我也經歷過奇怪的行爲執行大規模刪除涉及子查詢,並在最後使用本機SQL代替它似乎是一個問題HQL parser。 – 2009-12-08 17:45:06

回答

1

你可以寫本地查詢在休眠狀態,更多關於該here。有點確定你的查詢有什麼問題,雖然

+0

謝謝。這很簡單,使用createSQLQuery():) – finpingvin 2009-04-15 14:57:31