JOOQ如何自助加入
JOOQ how to self join
现在我的代码如下所示:
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
形式的 <Employee(employee), Employee(boss)>
。也就是说,key是一个员工,value是他的老板。但是执行代码的结果是返回了一个Map
,其中key和value都是老大。我该如何解决这个问题?
你必须解决两件事:
- 投影所有列,包括
"boss"
table,而不仅仅是 "employee"
table 的
- 使用正确的
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);
现在我的代码如下所示:
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
形式的 <Employee(employee), Employee(boss)>
。也就是说,key是一个员工,value是他的老板。但是执行代码的结果是返回了一个Map
,其中key和value都是老大。我该如何解决这个问题?
你必须解决两件事:
- 投影所有列,包括
"boss"
table,而不仅仅是"employee"
table 的 - 使用正确的
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);