【问题标题】:JOOQ how to self joinJOOQ如何自我加入
【发布时间】:2021-02-06 03:46:05
【问题描述】:

现在我的代码如下所示:

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

我需要获取&lt;Employee(employee), Employee(boss)&gt; 形式的Map。换句话说,关键是员工,价值是他的老板。但是执行代码的结果是返回了一个Map,其中key和value都是boss。我该如何解决这个问题?

【问题讨论】:

    标签: java jooq self-join


    【解决方案1】:

    你必须解决两件事:

    1. 投影所有列,包括"boss" 表,而不仅仅是"employee"
    2. 使用正确的intoMap(Table, Table)重载

    即:

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

    【讨论】:

      猜你喜欢
      • 2016-06-17
      • 2016-02-17
      • 2021-03-30
      • 2018-11-23
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 2021-08-29
      • 2019-08-09
      相关资源
      最近更新 更多