Java 8 使用spring数据rest选择不同的值

Java 8 使用spring数据rest选择不同的值,java-8,spring-data-rest,Java 8,Spring Data Rest,我正在使用Java8和SpringDataREST在我的数据上创建API 我有一张桌子,名字,日期 我正在尝试使用一个端点来检索不同的汽车名称 这是我的存储库: @RepositoryRestResource(path = "cars") public interface CarRepository extends JpaRepository<Car, Long> { //What i want to do //@Query(value = "select d

我正在使用Java8和SpringDataREST在我的数据上创建API

我有一张桌子,名字,日期

我正在尝试使用一个端点来检索不同的汽车名称

这是我的存储库:

@RepositoryRestResource(path = "cars")    
public interface CarRepository extends JpaRepository<Car, Long> {
    //What i want to do
    //@Query(value = "select distinct c.name as name from Car c")
    @Query(value = "select distinct c from Car c")
    List<Car> findDistinctName();      
}
显然,这是SDR的正常行为

我用投影法尝试了另一种解决方案

但是我不能得到不同的价值观,知道吗


谢谢:

如果您需要一个不同的汽车列表,您需要做的就是使用以下查询方法:

public interface CarRepository extends JpaRepository<Car, Long> {
    List<Car> findDistinctBy();
}

Spring Data JPA支持存储库查询方法中的关键字,以便在要创建的查询上设置一个不同的标志。

我发现了一个难看的解决方法,使用jpql:


@Queryvalue=select c from Car c其中c.id在select minca.id from Car ca Group by ca.name中

事实上,我需要不同的车名,我尝试了解决方案,但仍然得到了相同的结果
@Projection(name = "name", types = {Car.class})
public interface CarName {
    String getName();
}
public interface CarRepository extends JpaRepository<Car, Long> {
    List<Car> findDistinctBy();
}