我正在使用的技术: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;
您可以将绑定变量显式转换为文本:
DSL.condition("{0}::text <<% {1}", ...)
或者内联它而不是绑定它:
DSL.condition("{0} <<% {1}", DSL.inline(searchKeyword), Tables.EXAMPLE.TEXT_FIELD)