【问题标题】:Hibernate: update to sum from other tableHibernate:更新到其他表的总和
【发布时间】: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 解析器的问题。

标签: sql mysql hibernate hql


【解决方案1】:

您可以在 hibernate 中编写本机查询,更多关于 here 的信息。有点确定您的查询有什么问题。

【讨论】:

  • 谢谢。这很简单,使用 createSQLQuery() :)
猜你喜欢
  • 2017-09-03
  • 2012-03-02
  • 2011-05-11
  • 1970-01-01
  • 2022-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多