我目前使用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相同的结果?
提前谢谢。
答案 0 :(得分:2)
这样做:
List<TableRecord> table = context
.selectFrom(TABLE)
.where(val("orange").eq(any(TABLE.ITEMS)))
.fetch();
以上查询使用DSL.any(Field<T[]>)