【问题标题】:Spring DATA JPA Passing two parameters -could not extract ResultSet;SQL [n/a]; org.hibernate.exception.SQLGrammerException:could not extract ResultSetSpring DATA JPA 传递两个参数 - 无法提取 ResultSet;SQL [n/a]; org.hibernate.exception.SQLGrammerException:无法提取结果集
【发布时间】:2021-11-10 18:47:01
【问题描述】:

我已经编写了以下 Spring Data JPA 原生查询。

@Query(value = "SELECT ID, REFERENCE FROM ORDER_MATCH where ORDER_REF IN :orderRef AND STATUS = :status", nativeQuery = true)
List<Object[]> retriveData(List<String> orderRef, String status);

这段代码给了我以下错误。

SQL Error : 936, SQLState : 42000
ORA-00936 : missing expression
org.springframework.dao.InvalidDataAccessResourceUsageException : could not extract ResultSet; SQL[n/a]; nested exception is org.hibernate.exception.SQLGrammerException: could not extract ResultSet

但是,如果我删除了一个参数,则代码可以正常工作,例如,以下两种组合可以正常工作,当我有两个参数时会出现问题,任何人都可以帮助我确定这里出了什么问题。非常感谢您。

一个参数的工作组合

@Query(value = "SELECT ID, REFERENCE FROM ORDER_MATCH where ORDER_REF IN :orderRef" , nativeQuery = true)
List<Object[]> retriveData(List<String> orderRef);

@Query(value = "SELECT ID, REFERENCE FROM ORDER_MATCH where STATUS = :status", nativeQuery = true)
List<Object[]> retriveData(String status);

只是为了添加更多细节,我使用了 :?传递参数的方式,它也会导致同样的错误

    @Query(value = "SELECT ID, REFERENCE FROM ORDER_MATCH where ORDER_REF IN (?1) AND STATUS = ?2", nativeQuery = true) 
List<Object[]> retriveData(List<String> orderRef, String status);

【问题讨论】:

  • 您是否尝试过记录实际生成的 SQL 查询?
  • 是的,我做到了,这是非常好的 sql 查询,我可以在 SQL 开发人员上运行传递参数

标签: spring oracle spring-boot hibernate spring-data-jpa


【解决方案1】:

试试这样的:

@Query(value = "SELECT ID, REFERENCE FROM ORDER_MATCH where ORDER_REF IN :orderRef AND STATUS = :status", nativeQuery = true)
List<Object[]> retriveData(@Param("orderRef") List<String> orderRef, @Param("status") String status);

还请注意,正如hibernate documentation 中所述:

值列表可以来自许多不同的来源。在constructor_expressioncollection_valued_input_parameter 中,值列表不能为空;它必须包含至少一个值。

【讨论】:

  • 你是完全正确的,值列表没有值,因此导致了这个问题......
猜你喜欢
  • 2015-02-18
  • 2021-08-01
  • 2015-05-27
  • 2016-07-27
  • 2018-09-24
  • 2013-06-13
  • 2014-07-16
  • 2020-11-04
相关资源
最近更新 更多