2009-04-15 127 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