【问题标题】:ON clause with Hibernate Query interface带有 Hibernate Query 接口的 ON 子句
【发布时间】:2019-07-25 02:58:55
【问题描述】:

当我使用带有左外连接的 On 子句时,我得到了 HibernateQueryException。

谁能告诉我是什么原因。

问候,

拉吉

【问题讨论】:

  • 原因是你搞错了。请提供更多详细信息。
  • @Slaks:查询在任何数据库工具中执行良好,当我使用与休眠相同的查询时失败
  • 哦,您有疑问;我们能看到吗?

标签: hibernate


【解决方案1】:

HQL 不支持 ... JOIN ... ON ... 语法,您可以 JOIN 仅对实体之间定义的关系 (FROM Foo foo JOIN foo.bars bar)。

如果你在任意条件下需要JOIN,你可以使用老式的FROM A a, B b WHERE a.x = b.y(虽然你不能用这种方式进行外连接)。否则必须使用原生 SQL 查询。

另请参阅:

【讨论】:

  • 原生 SQl 查询如何支持这一点?
  • 好吧,从技术上讲,使用 hql 4.3,实际上支持“on”,但是在非标准方式中,您必须使用“with” - bmchild.com/2012/05/…
  • Hibernate 5 以原生“sql”方式支持“on”子句。 select history from User user join UserHistory history on user.id = history.user。这里 User 和 UserHistory 以一对多的方式关联。
【解决方案2】:

你可以使用'with'子句:

from Cat as cat
left join cat.kittens as kitten
    with kitten.bodyWeight > 10.0

https://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html

【讨论】:

    猜你喜欢
    • 2017-04-21
    • 2014-10-03
    • 1970-01-01
    • 2017-11-18
    • 2015-06-07
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多