首页 > 解决方案 > 如何像任何字符串 JPA 数组一样使用

问题描述

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

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

标签: javapostgresqlhibernatejpasql-like

解决方案


你可以尝试这样的事情:

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


推荐阅读