我正在尝试使用 HIBERNATE 和 JPA 进行咨询。
这是本机查询,它适用于 postgres
select * from table tb where upper(tb.column1) like any(array[?1]);
但是当我使用 jpa 运行时出现以下错误
[42883]错误:运算符不存在:文本~~记录 Dica:没有运算符与给定名称和参数类型匹配。您可能需要添加显式类型转换。
我发现这是因为休眠运行这样的查询:
select * from table tb where upper(tb.column1) like any(array[('%text1%', '%texte2%')]);
并且它应该没有“()”,如下所示:
select * from table tb where upper(tb.column1) like any(array['%text1%', '%texte2%']);
这是我在 JPA 上运行的方式
@Query(nativeQuery = true, value = "SELECT column1 FROM table1 WHERE column1 LIKE ANY(ARRAY[?1])")
List<String> example(List<String> valores);
我该如何解决......
你可以尝试这样的事情:
select * from (select unnest([array]) as colum_text from [table]) as temporal where temporal.colum_text like '%[value to search]%'
您应该能够通过将方法的参数类型从
List<String>
更改为 String[]
来解决它:
@Query(nativeQuery = true, value = "SELECT column1 FROM table1 WHERE column1 LIKE ANY(ARRAY[?1])")
List<String> example(String[] valores);