如何按照 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[?,?]
我正在尝试使用 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[?,?]