首页 > 解决方案 > 在 JOOQ 中带有列表的 IN 谓词仅返回第一个值

问题描述

我在 JOOQ 中有一个带有 IN(List) 谓词的简单选择,但此查询的结果仅针对列表中的第一个元素。

        List<Integer> ids = context.select(TABLE1.ID).from(TABLE1).where(
                TABLE1.NAME.eq(name)).fetch().into(Integer.class);

        List<MyObject> myObjectList = context.selectFrom(TABLE2)
                .where(TABLE2.ID.in(ids))
                .fetch().into(MyObject.class);

数据样本

第一个查询结果-> List Ids={1,2,3,4}

TABLE2 内容 -> MyObject (1, A), MyObject (2, B), MyObject (3, C), MyObject(4, D) ........., MyObject(21, Z)

第二个查询结果 -> MyObject(1, A)

标签: javasqljooq

解决方案


解决了

问题是第一个查询语法。

Field<Integer> ids = context.select(TABLE1.ID).from(TABLE1).where(
                TABLE1.NAME.eq(name)).asField();

List<MyObject> myObjectList = context.selectFrom(TABLE2)
                .where(TABLE2.ID.in(ids))
                .fetch().into(MyObject.class);

推荐阅读