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.