【发布时间】:2010-10-19 14:46:58
【问题描述】:
我正在尝试将此查询从 MySQL 复制到 HQL: 更新用户 u,挖掘 m SET u.mana = u.mana + COALESCE((SELECT SUM(m.mana_rate) FROM mines m WHERE m.user_id = u.id), 0)
只需在 HQL 中执行此操作: update User u set u.mana = u.mana + (select coalesce(sum(m.manaRate), 0) from Mine m where m.userId = u.id)
给出以下错误: 线程“主”org.hibernate.hql.ast.QuerySyntaxException 中的异常:意外的 AST 节点:查询 [更新 mm.user.User u set u.mana = u.mana + (select coalesce(sum(m.manaRate ), 0) 来自 mm.map.buildings.mines.Mine m where m.userId = u.id)]
我是 Hibernate 的新手,所以我真的不知道从哪里开始,以及错误的含义。 如果不可能,我可以在 Hibernate 中编写原生 MySQL 查询吗?
编辑:问题似乎出在“u.mana = u.mana +”,因为当我只是做 u.mana = (select... 查询工作正常
【问题讨论】:
-
我在执行涉及子查询的批量删除时也遇到了奇怪的行为,最终使用了本机 SQL。这似乎是 HQL 解析器的问题。