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

时间:2016-04-18 11:43:54

标签: postgresql 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) ??
);

1 个答案:

答案 0 :(得分:1)

目前jOOQ不支持此功能,但您可以使用"plain SQL"轻松实现实用程序功能:

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