如何使用' ANY' JOOQ的功能

时间:2017-01-09 11:28:13

标签: java sql postgresql jooq

我目前使用JOOQ从postgresql DB获取数据。然后我遇到了一个问题,即获取数据类型为数组类型的数据。

现状如下:

表架构是:

CREATE TABLE favorites (
    id int,
    items    varchar(100)[]
);

示例数据是:

INSERT INTO favorites (id, items)
    VALUES (1, '{orange, lemon, banana}');
INSERT INTO favorites (id, items)
    VALUES (2, '{apple, grape}');

要获取第一个数据,SQL就像:

SELECT id, items FROM favorites WHERE 'orange' = ANY (items);

但是,我无法使用JOOQ创建上面的sql。

Connection connection = ...;
DSLContext context = DSL.using(connection, ...);
List<Table> table = context.select().from(TABLE).fetchInto(class.TABLE);

我可以在JOOQ中使用任何功能吗? 如果可能,我如何使用JOOQ创建它。 如果没有,是否还有其他方法可以获得与JOOQ相同的结果?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

这样做:

List<TableRecord> table = context
    .selectFrom(TABLE)
    .where(val("orange").eq(any(TABLE.ITEMS)))
    .fetch();

以上查询使用DSL.any(Field<T[]>)