Spring DATA JPA 传递两个参数 - 无法提取结果集;SQL [n/a]; org.hibernate.exception.SQLGrammerException:无法提取结果集
Spring DATA JPA Passing two parameters -could not extract ResultSet;SQL [n/a]; org.hibernate.exception.SQLGrammerException:could not extract ResultSet
我写了以下 spring 数据 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);
尝试这样的事情:
@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 中所述:
The list of values can come from a number of different sources. In the constructor_expression
and collection_valued_input_parameter
, the list of values must not be empty; it must contain at least one value.
我写了以下 spring 数据 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);
尝试这样的事情:
@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 中所述:
The list of values can come from a number of different sources. In the
constructor_expression
andcollection_valued_input_parameter
, the list of values must not be empty; it must contain at least one value.