Jooq 和 postgres:纯 sql 中的 pg_trgm 运算符会产生错误“运算符不存在”

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

我正在使用的技术:java、spring boot、jooq、带有 pg_trgm 扩展的 postgres。

我尝试使用 pg_trgm 运算符在 Postgres 上进行简单搜索,但 jooq 抛出错误。

代码示例:

String searchKeyword = "something";
DSL.select(Tables.EXAMPLE.ID)
          .from(Tables.EXAMPLE)
          .where(DSL.condition("{0} <<% {1}", DSL.val(searchKeyword), Tables.EXAMPLE.TEXT_FIELD))

产生错误

operator does not exist: character varying <<% text

请注意,如果直接在数据库上运行,以下纯 SQL 查询可以工作:

select id from example where 'something' <<% text_field;
java postgresql jooq pg-trgm
1个回答
0
投票

您可以将绑定变量显式转换为文本:

DSL.condition("{0}::text <<% {1}", ...)

或者内联它而不是绑定它:

DSL.condition("{0} <<% {1}", DSL.inline(searchKeyword), Tables.EXAMPLE.TEXT_FIELD)
© www.soinside.com 2019 - 2024. All rights reserved.