微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 JDBI 3 RowMapper 处理记录或结果集的 array_agg()

如何解决使用 JDBI 3 RowMapper 处理记录或结果集的 array_agg()

您如何处理映射 Postgres 结果记录的数组列?我有一个连接三个表的查询,表 a、b 和 c。关系如下: a 0 到 n b b 1 对 1 c

查询SELECT a.*,array_agg((b.*,c.*)) as b_list FROM a LEFT JOIN b ON b.id=ANY(a.b_ids) AND a.tenant_id=b.tenant_id LEFT JOIN c ON b.c_id=c.id AND b.tenant_id=c.tenant_id GROUP BY b.id,b.tenant_id

行映射器:

query.registerRowMapper(A.class,(rs,ctx) -> {
   
    //How do I handle the b_list??
    //I have tried the following
      Array bArray = rs.getArray("b_list");
      List<B> bDtos = new ArrayList<>();
      ResultSet resultSet = bArray != null ? bArray.getResultSet() : null;
      while (resultSet != null && !resultSet.last()) {
        bDtos.add(bDtoRowMapper.map(resultSet,ctx));
        resultSet.next();
      }
   
})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。