使用 jOOQ 将 SQL 查询转换为 PostgreSQL 中的数组

Converting a SQL query to an ARRAY in PostgreSQL with jOOQ

假设我有一个查询类型:

SELECT * FROM users WHERE access_codes @>
    ARRAY[(SELECT access_code FROM provisional_access)];

我如何在 jooq 中写这个?到目前为止我做的最好的是:

ctx.selectFrom(Tables.USERS).where(Tables.USERS.ACCESS_CODES).contains(
    ?? ctx.select(Tables.PROVISIONAL_ACCESS.ACCESS_CODE).from(Tables.PROVISIONAL_ACCESS) ??
);

jOOQ 目前不支持开箱即用,但您可以使用 "plain SQL":

轻松实现实用函数
public static <T> Condition arrayContains(
    Field<T[]> left, Select<? extends Record1<T>> right
) {
    return DSL.condition("{0} @> ARRAY[({1})]", left, right);
}