我想翻译我的 postgresdb 查询,比如
SELECT oc.* FROM original_content oc
WHERE oc.id = ANY(array(SELECT ps.oc_version FROM pipeline_status ps WHERE ps.uuid='4f3164b9-6fde-45d6-bd58-86308473b0dc'))
to jooq - 我生成了 dsl 我做了类似的事情
dslContext.select(
ORIGINAL_CONTENT.asterisk()
)
.from(ORIGINAL_CONTENT)
.where(ORIGINAL_CONTENT.ID.eq(
DSL.any(DSL.select(PIPELINE_STATUS.OC_VERSION).from(PIPELINE_STATUS).where(PIPELINE_STATUS.UUID.eq(pipelineUuid)))
)
)
但我收到类似
Cannot resolve method 'eq(QuantifiedSelect<Record1<T>>)'
的错误 - 如何解决该问题?
您遗漏了
DSL.array()
调用来包装您的子查询:
ORIGINAL_CONTENT.ID.eq(
any(array(select(...)))
)
但是为什么要这么做呢?您的查询与使用普通
IN
谓词的查询并没有真正的不同:
ORIGINAL_CONTENT.ID.in(select(...))