You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JOOQ:无需额外往返计算分页元数据时忽略未映射字段

解决方法

最简单的处理方式是在fetchGroups中手动指定映射逻辑,跳过total字段直接构造MyProjection对象,无需修改原有的MyProjection类。

修改后的代码示例

Map<Integer, List<MyProjection>> result = dslContext.selectDistinct(
        count().over().as("total"),
        ID,
        NAME
    )
    .from(TABLE)
    .fetchGroups(
        field("total", Integer.class),
        // 手动映射Record到MyProjection,仅提取需要的字段
        record -> new MyProjection(record.get(ID), record.get(NAME))
    );

原代码报错原因

默认的DefaultRecordMapper会尝试将查询返回的所有字段(total、id、name)映射到MyProjection类,但MyProjection的构造方法只接收id和name两个参数,没有匹配的构造逻辑处理total字段,因此抛出映射异常。

说明

由于使用了窗口函数count().over(),查询结果中所有行的total值都是相同的(即总记录数),因此最终得到的Map中只会存在一个键值对,键为总条数,值为所有MyProjection对象的列表。

内容的提问来源于stack exchange,提问作者Михаил Катков

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 04:29:59