如何用QueryDSL获取实体ID与关联实体数量的映射(不传输实体)
QueryDSL-4.2.1 获取实体ID与关联实体数量的映射
你需要调整分组字段和统计逻辑,确保以qE1的ID为键,关联的qE2实体数量为值,同时避免传输完整实体。正确代码如下:
Map<Long, Long> idToCountMap = queryFactory .from(qE1) .leftJoin(qE2).on(qE2.qE1_id.eq(qE1.id)) // 用leftJoin避免过滤掉无关联qE2的qE1 .where(qE1_exp) .transform(GroupBy.groupBy(qE1.id).as(GroupBy.count(qE2.id)));
关键说明:
- 分组字段改为
qE1.id,保证映射的键是目标实体ID - 统计关联数量用
GroupBy.count(qE2.id),若用qE1.count()会统计qE1自身重复数,不符合需求 - 使用
leftJoin可保留无关联qE2的qE1实体,对应数量为0;若用join则会过滤这类实体,可根据业务需求选择 transform方法直接返回Map类型,无需传输完整实体对象
内容的提问来源于stack exchange,提问作者slider
相关产品推荐
相关产品推荐

