如何像任何字符串 JPA 数组一样使用

问题描述 投票:0回答:2

我正在尝试使用 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);

我该如何解决......

java postgresql hibernate jpa sql-like
2个回答
0
投票

你可以尝试这样的事情:

select *  from (select unnest([array]) as colum_text from [table]) as temporal where temporal.colum_text like '%[value to search]%'


0
投票

您应该能够通过将方法的参数类型从

List<String>
更改为
String[]
来解决它:

@Query(nativeQuery = true, value = "SELECT column1 FROM table1 WHERE column1 LIKE ANY(ARRAY[?1])")
List<String> example(String[] valores);
© www.soinside.com 2019 - 2024. All rights reserved.