如何按照Spring JPA中构建参数列表的方式自定义参数



我正试图用Spring JPA存储库中的一个方法调用DB函数,如下所示:

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

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

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

然而,正在生成的SQL看起来不同:

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

这种语法不起作用。有没有一种好的方法可以自定义如何将这些参数转换为SQL?这样我就可以有数组[?,?]?

如果我这样做:

array[:ids]

它用((这样转换:

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

如果我们取这个列表,它会转换成逗号分隔的值,并用括号括起来。

array[(?, ?)]

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

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

这是我们得到的

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