这是使用
ResultQuery.fetchGroups(RecordMapper,RecordMapper)
Map<UserPojo, List<RolePojo>> result =dsl.select(USER.fields()) .select(ROLE.fields()) .from(USER) .join(USER_TO_ROLE).on(USER.USER_ID.eq(USER_TO_ROLE.USER_ID)) .join(ROLE).on(ROLE.ROLE_ID.eq(USER_TO_ROLE.ROLE_ID)) .where(USER.U_EMAIL.equal(email)) .fetchGroups( // Map records first into the USER table and then into the key POJO type r -> r.into(USER).into(UserPojo.class), // Map records first into the ROLE table and then into the value POJO type r -> r.into(ROLE).into(RolePojo.class) );
请注意,如果您要
LEFT JOIN改用(如果用户不一定具有任何角色,并且希望每个用户获得一个空列表),则必须自己将
NULL角色转换为空列表。
确保已激活生成
equals()和
hashCode()POJO,以便能够将它们
HashMap作为as键:
<pojosEqualsAndHashCode>true</pojosEqualsAndHashCode>



