【问题标题】:How to write equivalent JPQL query for LEFT OUTER JOIN written in native sql?如何为用本机 sql 编写的 LEFT OUTER JOIN 编写等效的 JPQL 查询?
【发布时间】:2018-04-04 19:13:48
【问题描述】:

这是本机查询 -

 @Query(nativeQuery = true, value = "SELECT CA FROM CLASS_ATTRIBUTE,WORD_PROCESSING WHERE ( word_processing.uoid  = class_attribute.c_user_explanation(+)) ORDER BY CLASS_ATTRIBUTE.DESCRIPTION ASC 

我尝试了以下 JPQL 查询,但没有成功 -

    @Query(value = "SELECT CA FROM ClassAttribute CA LEFT JOIN CA.WordProcessing AS WP ON ( WP.id  = CA.userExplanationUoid) ORDER BY CA.description ASC")

还尝试了以下 JPQL -

    @Query(value = "SELECT CA FROM ClassAttribute CA LEFT OUTER JOIN CA.WordProcessing AS WP WHERE ( WP.id  = CA.userExplanationUoid) ORDER BY CA.description ASC")

如果我尝试这些,编译会进入无限循环。 Spring 框架中的某些内容导致它一次又一次地刷新。转换后的 JPQL 查询的语法似乎存在一些问题。

【问题讨论】:

  • 请提供您的问题的最小表示。没有人应该通读这样一个冗长的查询。
  • 感谢您的建议。我已经做到了。
  • TO_CHAR 不是 JPQL 关键字。如果您希望人们可以帮助您,您也可以发布实体及其映射。否则,很难正确地制定查询。

标签: java sql spring jpql


【解决方案1】:

看来问题出在 pom.xml 中,其中 hibernate.entitymanager.version 为 5.0.12.Final。将其更改为 5.1.10.Final 对我有用。

由于 hibernate.entitymanager 现在已被 Maven (https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager) 弃用,它实际上下载了 jar hibernate-core:5.1.10.Final,因为与 JOIN 相关的查询现在工作正常。

【讨论】:

    猜你喜欢
    • 2014-01-07
    • 1970-01-01
    • 2015-01-10
    • 2010-09-24
    • 2012-01-02
    • 2012-05-16
    • 2015-05-19
    • 2022-08-15
    • 1970-01-01
    相关资源
    最近更新 更多