java - 在 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)
解决方案
解决了
问题是第一个查询语法。
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);
推荐阅读
- android - 如果已经登录,如何跳过登录 - 使用谷歌登录 - android
- python - 需要帮助比较从条件语句中的日期帧派生的日期时间对象
- azure - Azure Key Vault 错误地创建了复合标识
- angular - 这是 ng-container 的正确用法吗?
- dax - DAX 或 POWER 查询递归计算
- python - 如何在 Python 的循环中将数据帧/数据帧的长度附加到列表中
- netlogo - NetLogo:限制在某个补丁收费的用户数量时的问题
- reactjs - PrimeReact 3.4,DataTable,仅在受控模式下排序
- python - 使用 xarray 获取 netcdf 文件的平均值
- c++ - C++ 类头文件和包含