Jooq - 如何将any 与返回bigint[] 值的子查询一起使用?

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

我想翻译我的 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>>)'
的错误 - 如何解决该问题?

java jooq
1个回答
0
投票

您遗漏了

DSL.array()
调用来包装您的子查询:

ORIGINAL_CONTENT.ID.eq(
    any(array(select(...)))
)

但是为什么要这么做呢?您的查询与使用普通

IN
谓词的查询并没有真正的不同:

ORIGINAL_CONTENT.ID.in(select(...))
© www.soinside.com 2019 - 2024. All rights reserved.