当前位置: 首页 > 面试题库 >

jOOQ我可以将两个表的联接提取到各自的POJO中吗

白学
2023-03-14
问题内容

在jOOQ中,如果我想将一张表的行提取到jOOQ自动生成的POJO中,例如:

dsl.selectFrom(USER)
                .where(USER.U_EMAIL.equal(email))
                .fetchOptionalInto(User.class);

现在,假设我想在两个表之间进行联接,例如USERROLE,如何将结果提取到这两个表的POJO中?


问题答案:

这是使用 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>


 类似资料:
  • 在jOOQ中,如果我想将表的一行获取到jOOQ自动生成的POJO中,我会这样做,例如: 现在,假设我想在两个表之间进行连接,例如和,如何将结果获取到这两个表的POJO中?

  • 我在这里浏览了关于在Jooq中将记录提取到可变pojo中的文档。 它说列被映射到最佳匹配的构造函数、属性或setter。 谁能分享更多的信息最佳匹配属性或setter意味着什么?

  • 问题内容: 我不是数据库专家,所以我需要一些有关正在处理的查询的帮助。在我的照片社区项目中,我不仅要显示标签名称和计数器(标签中的图像数量),而且还想显示标签中最受欢迎的图像(最因果),以丰富标签的可视化效果。 表设置如下: 图像表包含基本图像元数据,重要的是因果字段 Imagefile表每个图像包含多个条目,每种格式一个 标签表保存标签定义 Tag_map表将标签映射到图像 在我通常的试验和错误

  • 我正在jOOQ中执行一个普通的sql查询,并希望将其映射到jOOQ生成的pojo中。我希望我能做这样的事情: 然而,这是行不通的。字段不会映射到构建所需的类型,因为字段定义是DB列的定义,而不是FOO表的映射类型。目前我的代码看起来像这样: 是否有某种方法可以为结果查询提供我正在获取的s,以便它能够正确映射结果?我希望在某个地方有这样的能力: 但是我找不到它。这是我忽略的东西还是不支持的? 作为参

  • 我有两个查询,它们查看不同的数据库表,并从每个表中的JSONB列中查找格式为[“tag1”、“tag2”、“tag3”]等的项。查询的目的是填充预测性下拉列表,即如果列表包含“dog”且用户类型为“d”,则应返回“dog”。这些查询中的每一个都单独工作,我可以很容易地将它们组合成一个JOOQ查询?

  • 假设我正在构建一个依赖于react的webapp,一堆小型util库,然后拥有自己的代码。 捆绑代码时,我想把它分成3个捆绑包 react,react dom和其他类似react路由器dom的东西 虽然我可以使用rollup将代码绑定到一个文件中,并包含依赖项,但是否可以为1和2创建文件?