JOOQ中带有列表的IN谓词仅返回第一个值

时间:2019-10-10 09:05:23

标签: java sql jooq

我在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);

数据样本

第一个查询结果->列表ID = {1,2,3,4}

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

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

1 个答案:

答案 0 :(得分:1)

已解决

问题是第一个查询语法。

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);