我在 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}
表2内容-> 我的对象(1,A), 我的对象(2,B), 我的对象(3,C), 我的对象(4, D) ……, MyObject(21, Z)
第二个查询结果 -> MyObject(1, A)
最佳答案
已解决
问题出在第一个查询语法上。
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);
关于java - JOOQ 中带有列表的 IN 谓词仅返回第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58319214/