首页 > 解决方案 > JpaRepository Distinct 不适用于多个字段

问题描述

我有这个工作正常的查询

@Query(value = "SELECT DISTINCT taxonomyGroup FROM sagePrices AS sP WHERE sP.brand = :brand AND sP.taxonomyGroup IS NOT NULL", nativeQuery = true)
List<String> findTaxonomyByBrandMatching(String brand);

但我想使用 JPARepository。我已经尝试了几个选项,但没有任何效果,我得到了所有正确的记录,但它们仍然重复

这些是我尝试过的几个选项。

List<SagePricesEntity> findTaxonomyGroupDistinctByBrandAndTaxonomyGroupNotNull(String brand);
List<SagePricesEntity> findDistinctTaxonomyGroupByBrandAndTaxonomyGroupNotNull(String brand);
List<SagePricesEntity> findDistinctTaxonomyGroupByTaxonomyGroupNotNullAndBrand(String brand);

有谁知道我想做的事情是否可行?

这是我在使用 JPARepository 查询时得到的响应

[
    {
        "taxonomyGroup": "rtrtr"
    },
    {
        "taxonomyGroup": "rtrtr"
    },
    {
        "taxonomyGroup": "fhfdhfdhdfh"
    },
    {
        "taxonomyGroup": "ydtyjtyjetyj"
    }
]

标签: springspring-bootspring-data-jpaspring-datadistinct

解决方案


您必须使用弹簧投影来仅获取一列值

 interface TaxonomyGroupOnly{
        String getTaxonomyGroup(); 
    }

List<TaxonomyGroupOnly> findDistinctTaxonomyGroupByBrandAndTaxonomyGroupNotNull(String category);

更多关于 Spring Projection - https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections


推荐阅读