我正试图用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[?,?]