如何用JpaRepository获取Long类型ID列表(无需@Query)
不使用@Query实现JpaRepository返回ID列表的方法
完全可以不使用@Query注解实现,Spring Data JPA的派生查询语法支持直接指定返回字段,具体有两种简洁方式:
1. 直接返回ID列表(推荐)
直接在方法名中明确指定要查询的id字段,Spring Data JPA会自动生成对应的查询语句,返回Long类型的ID列表:
List<Long> findIdByUserId(Long userId);
这个方法会被解析为SQL:SELECT e.id FROM Education e WHERE e.userId = ?1,直接返回符合条件的所有ID,无需额外处理。
2. 使用接口投影
如果需要灵活扩展(比如后续要返回其他字段),可以定义一个仅包含id的投影接口:
interface EducationIdProjection { Long getId(); }
然后定义查询方法:
List<EducationIdProjection> findByUserId(Long userId);
使用时遍历投影列表提取ID即可:
List<Long> idList = projectionList.stream() .map(EducationIdProjection::getId) .collect(Collectors.toList());
两种方式都不需要手动编写@Query注解,完全依赖Spring Data JPA的派生查询能力。
内容的提问来源于stack exchange,提问作者selvi
相关产品推荐
相关产品推荐

