当前位置: 首页 > 知识库问答 >
问题:

JOOQ如何自加入

涂选
2023-03-14

现在我的代码如下所示:

EmployeeTable employee = EMPLOYEE.as("employee");
EmployeeTable boss = EMPLOYEE.as("boss");

Map<Employee, Employee> result = dslContext.select(employee.fields())
        .from(employee)
        .join(boss)
        .on(employee.BOSS_ID.eq(boss.ID))
        .fetch()
        .intoMap(Employee.class, Employee.class);

我需要获取表格的Map


共有1个答案

任飞鸣
2023-03-14

你必须解决两件事:

  1. 投影所有列,包括“boss”表的列,而不仅仅是“employee”表的列

即。:

Map<Employee, Employee> result = 
dslContext.select() // Just leave this empty, or project everything explicitly
          .from(employee)
          .join(boss)
          .on(employee.BOSS_ID.eq(boss.ID))
          .fetch()
          .intoMap(employee, boss);
 类似资料:
  • 我想在SQL中执行以下操作: 在jOOQ中,我将subQ存储到Select中 我的问题是,如何从subQ中获取maxCol列,并在join中使用它?我的连接是这样的: 我在()上出错 类型字段中的方法eq(字符串)不适用于参数(字段) 我该怎么办?

  • 问题内容: 我最近问了一个有关“自我加入”的问题,得到了一个很好的答案。 该查询用于查找事件1之后1天的事件2的ID,开始日期和价格。 该代码工作正常。 但是我不知道如何。 有人可以尽可能详尽地解释一下-查询的不同部分是什么以及它们做什么? 非常感谢您的帮助,无论出于什么原因,我都很难解决这个问题。 问题答案: 我试图理解的方式是在第一块上写出两个列表,分别标记为event1和一个event2。然

  • 类似于这个问题:如何在Jooq中初始化和创建ResultSet和记录?但使用自定义行类型记录而不是简单的表记录。我正在实例化一个jooq记录以用于模拟,但该记录有超过22列并包含来自许多连接表的行,所以我使用RecordImpl。 这引发异常 java.lang.IllegalArgumentException:行()中不包含字段(“course\u id”) 注意,我没有直接使用RecordIm

  • 我需要从包含自动生成的jooq记录的Vaadin网格中添加/删除/自定义列。 现在我喜欢(例如)添加一个按钮。 结果: java.lang.IllegalStateExcture:此Grid的容器不是Grid()构造函数的默认容器 使用Vaadin表,效果很好。但读完这篇文章后,我喜欢使用网格 我在这里找到了发生这种情况的原因 如何使用我在这里找到的简单bean编写容器 我如何才能实现与jooq记

  • 你不知道如何在JOOQ(Java)中创建主键吗?我需要的只是得到正确的创建表字符串。我还没有这段代码(使用SQLDialect。MYSQL): 输出(来自字符串生成器): 我需要的是设置主键以获得正确的输出: 不使用execute()是否可能?因为我只需要它作为字符串,所以我想再次使用only getSQL()命令。。。 我发现了类似这样的东西:DSL。主密钥(“id”); 但我无法将它与rest

  • 我正在使用JOOQ 3.6.4和Java 8从模式生成一组JOOQ记录。 有些表是结构类似的引用数据,比如说它们有ID、CODE和VALUE列(它们可能有其他列,但它们都至少有这些列)。 在我的代码中,不是由JOOQ生成的,我有一个接口“ReferenceData”,它定义了与JOOQ为这三列生成的代码相匹配的访问器。我想告诉JOOQ在它生成的记录对象中添加一个“implements Refere