【问题标题】:how to use like any with array of string JPA如何像任何字符串 JPA 数组一样使用
【发布时间】:2019-08-05 21:48:50
【问题描述】:

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

我该如何解决....

【问题讨论】:

  • ANY 运算符前面必须有以下比较运算符之一 =、、 和 这就是不起作用的原因

标签: java postgresql hibernate jpa sql-like


【解决方案1】:

你可以试试这样的:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 2021-06-17
    • 2014-12-17
    • 2014-08-12
    • 2022-01-19
    相关资源
    最近更新 更多