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

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

数据样本

第一个查询结果->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/

相关文章:

sql - 如何获取每个空值的行号?

java - 批量删除抛出QueryCollectorSignal异常?

java - jOOQ:解析 Oracle TIMESTAMP WITH TIME ZONE 时出错

java - 数据库中超过一个用户的 Spring Security 身份验证不起作用

sql - 如何识别两行不同的单元格?

java - 如何设置在一个事件中处理所有数字笔划的键绑定(bind)?

mysql - 根据 id 使用新列值更新整个列

postgresql - 无法在 jooq 插入中设置 UDT,始终收到 StackOverflowError

java - 基于 AOP 的持久性、事务和消息传递示例

java - org.apache.http.impl.io.DefaultHttpRequestWriterFactory 中的 NoSuchFieldError 实例