【问题标题】:Getting Query syntax error when trying to use inner join尝试使用内部联接时出现查询语法错误
【发布时间】:2017-02-15 19:42:28
【问题描述】:

我的查询中出现 org.hibernate.hql.internal.ast.QuerySyntaxException

Query query = session.createQuery("update Room as r "
            + "inner join Booking as b "
            + "on r.roomId = b.room.roomId "
            + "set r.roomAvailable = true "
            + "where b.checkOutDate < NOW()");

完全错误:

org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是 java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:期待“设置”,在第 1 行第 55 列附近找到“内部”[将 com.websystique.springsecurity.model.Room 更新为 r 内部加入 com.websystique.springsecurity.model.Booking 作为 b on r.roomId = b.room.roomId set r.roomAvailable = true where b.checkOutDate

查询在 mysql 工作台中运行良好...所以这在代码中是否可能?

非常感谢任何帮助。

【问题讨论】:

  • 查询在 mysql workbench 中运行良好:mysql workbench 执行 SQL 查询。 session.createQuery 需要一个 HQL 查询。这是两种不同的语言。
  • 你需要使用createSqlQuery insted of createQuery
  • @mvlaicevich 谢谢哥们!
  • @john 不客气!

标签: hibernate hql


【解决方案1】:

您必须使用带有子选择而不是连接的查询。重写您的查询,它将起作用。

【讨论】:

    猜你喜欢
    • 2021-09-18
    • 2015-08-08
    • 1970-01-01
    • 2019-08-10
    • 2018-07-12
    • 2012-03-21
    • 2018-03-20
    • 2022-01-16
    • 2016-02-18
    相关资源
    最近更新 更多