Java 如何使用jOOQ执行特定查询

Java 如何使用jOOQ执行特定查询,java,postgresql,jooq,Java,Postgresql,Jooq,我在使用PostgreSQL数据库的项目中使用jOOQ。在没有特定条件的情况下执行查询没有任何问题,但是如何使用jOOQ执行以下查询 --未找到查询的顶部 其中pow.tags@>数组[?] 和pow.tags@>数组[?] 和位置('access,yes'在数组_到_字符串(pow.tags,,'))中=0 城市=? 有时,我需要使用PostGIS函数执行请求,我必须如何在jOOQ中编写它?以下是如何编写谓词: 条件= contains(新字符串[]{“a”、“b”、“c”}) .and(P

我在使用PostgreSQL数据库的项目中使用jOOQ。在没有特定条件的情况下执行查询没有任何问题,但是如何使用jOOQ执行以下查询

--未找到查询的顶部
其中pow.tags@>数组[?]
和pow.tags@>数组[?]
和位置('access,yes'在数组_到_字符串(pow.tags,,'))中=0
城市=?

有时,我需要使用
PostGIS
函数执行请求,我必须如何在jOOQ中编写它?

以下是如何编写谓词:

条件=
contains(新字符串[]{“a”、“b”、“c”})
.and(POW.TAGS.contains(新字符串[]{“b”、“c”、“d”})//这里只假设一些标记
和(位置(“访问,是”,arrayToString(POW.TAGS,,”)).eq(zero())
及(POW.CITY.eq);;
以上答案假设以下静态导入:

import static org.jooq.impl.DSL.*;
导入静态org.jooq.util.postgres.PostgresDSL.*;
Field.contains()可能存在问题
如果
标记
列的类型为
文本
,而不是
VARCHAR
,则
字段.contains()存在已知问题:

解决方法是使用普通SQL:

公共静态条件myContains(字段,字符串[]数组){
返回包含(“{0}@>{1}”,字段,val(数组));
}