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

Spring JPARepository中如何查询唯一列值而非实体?能否避免原生查询?

无需原生查询实现distinct产品类型查询

当然可以不用原生查询,有两种简洁的实现方式:

方式一:利用Spring Data JPA方法命名规则

直接在仓库接口中按规则定义方法,Spring Data JPA会自动生成对应的JPQL查询,无需手动编写SQL或JPQL:

public interface MyProductRepository extends JpaRepository<MyProduct, Long> {
    // 两种写法都可行,推荐第二种更符合命名规范
    List<String> findDistinctProdType();
    // List<String> findDistinctByProdType();
}

这个方法会被解析为JPQL:SELECT DISTINCT m.prodType FROM MyProduct m,和你之前的原生查询效果完全一致。

方式二:使用JPQL查询

通过@Query注解编写面向实体的JPQL语句,不指定nativeQuery=true:

public interface MyProductRepository extends JpaRepository<MyProduct, Long> {
    @Query("SELECT DISTINCT m.prodType FROM MyProduct m")
    List<String> findDistinctProdTypes();
}

这种方式用实体类名MyProduct和属性名prodType替代数据库表名和列名,更贴合JPA的面向对象设计,也避免了和特定数据库语法绑定。

内容的提问来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:03:18