当前位置: 首页 > 知识库问答 >
问题:

将递归查询转换为JPQL时的SQL查询语法异常

祁坚壁
2023-03-14

这是从下面提到的SQL查询创建的JPQl查询:

SELECT * FROM NursingSectionHead head where head.secCode IN (" + 
            "WITH NUR_SECTIONS_SEC_CODE (secCode) " + 
            "AS (SELECT secCode " + 
            "FROM NursingSection " + 
            "WHERE secCode = (SELECT loc.nursingSecCode FROM LocationMast loc WHERE loc.id.locCode = :locCode) " + 
            "UNION ALL " + 
            "SELECT C1.secCode " + 
            "FROM NursingSection C1 " + 
            "INNER JOIN NUR_SECTIONS_SEC_CODE C2 ON C1.prevSec = C2.secCode)" + 
            "SELECT * FROM NUR_SECTIONS_SEC_CODE)
select * from IR_TB_NUR_SEC_HEAD head where HEAD.SEC_CODE IN (
WITH NUR_SECTIONS_SEC_CODE (SEC_CODE)
AS (
     SELECT SEC_CODE
    FROM IR_TB_NUR_SECTIONS
    WHERE SEC_CODE = (select LOC.NURSING_SEC_CODE from mst_tb_location_mast loc where LOC.LOC_CODE = 20023)

    UNION ALL

    SELECT C1.SEC_CODE
    FROM IR_TB_NUR_SECTIONS C1
    INNER JOIN NUR_SECTIONS_SEC_CODE C2 ON C1.PREV_SEC = C2.SEC_CODE
    )
SELECT *
FROM NUR_SECTIONS_SEC_CODE)

“org.springframework.dao.invalidDataAccessResourceUsageException:无法提取ResultSet;SQL[n/a];嵌套异常为org.hibernate.exception.sqlgrammarexception:无法提取ResultSet”

请问上述例外情况我能做些什么?

共有1个答案

孟浩然
2023-03-14

您正在使用的“with”子句被称为公共表表达式(CTE)。我非常肯定JPQL不支持CTE,因为如果支持它,就不会有人专门开发支持CTE查询的库,而只为Hibernate开发库。

但是您可以切换到使用本机SQL,只要您的查询真的能够成功地针对您正在使用的数据库执行,本机SQL就应该始终有效。

 类似资料:
  • 问题内容: 我想将以下SQL查询转换为Elasticsearch之一。谁能帮上忙 我尝试了以下方法: 但不确定我是否做对了,因为它无法验证结果。似乎要在聚合内添加查询。 问题答案: 假设您使用Elasticsearch 2.x,则有可能在Elasticsearch中 具有 -semantics。我不知道2.0之前的可能性。 您可以使用新的Pipeline Aggregation Bucket Se

  • 问题内容: 多亏了Erwin Brandstetter在我之前的问题“具有has_many关系的订单”中的帮助,我的SQL查询才能正常工作。 如何将该SQL转换为ActiveRecords或AREL查询以在范围中使用? 我最近来的是在朋友的帮助下… …这给了我一个错误: 更新: 我之前的问题对相关的架构和查询有完整的描述。但是基本上Articles have_many Metrics和一个Metr

  • 任何帮助都将不胜感激!

  • 问题内容: 有很多问题可以帮助将特定的SQL查询转换为ActiveRecord查询。 是否有一些帮助/指导[在线]工具可以自动进行转换? 问题答案: 这是您正在寻找的工具:http : //www.scuttle.io/

  • 我有两个表,它们通过一个外键来维护它们之间的父子关系。查询如下所示。我想在使用jpa的同时使用标准版。所以有人可以帮助我使用标准版吗 表“child”的“notification\u id\u child”列是外键,并引用表“parent”的主键。

  • 问题内容: 基于现有表,我使用了CTE递归查询来得出以下数据。但是无法进一步应用它。 数据如下 我想从上述数据递归形成完整路径。意味着递归将给出以下输出。 谢谢 问题答案: 以下是CTE的示例: