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