如何按照 Spring JPA 中内置参数列表的方式自定义参数?

How to customize parameters the way parameters list is built in Spring JPA?

我正在尝试使用 Spring JPA 存储库中的方法调用数据库函数,如下所示:

@Query(value = "select * test.getVals(:ids)", nativeQuery = true)

当我手动调用它时,我会:

select * from test.getVals(array[2, 14577])

但是,正在生成的 SQL 看起来不同:

select * from test.getVals(?, ?, ?)

此语法无效。 有没有什么好的方法可以自定义这些参数如何转换成SQL?这样我就可以有 array[?, ?]?

如果我这样做:

array[:ids]

用()转换成这样:

array[(?, ?)]
array[:ids]

如果我们获取列表,它会转换为用括号括起来的逗号分隔值。

array[(?, ?)]

除此之外,我们可以使用字符串值

List<Integer> ids = new List<Integer>{1,2,3};
String idsString = string.Join(",", ids);

这是我们得到的

arry[:idsString] => array[?,?]