使用spring data rest

时间:2018-06-06 12:35:59

标签: java-8 spring-data-rest

我使用java 8和spring-data-rest在我的数据上创建API。

我有一张表Car(id,name,date ...)

我试图让端点检索不同的车名。

这是我的知识库:

@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();      
}

评论的查询不起作用,我有一个例外

java.lang.IllegalArgumentException: PersistentEntity must not be null! 

显然这是SDR的正常行为。

我使用Projections

尝试了另一种解决方案
@Projection(name = "name", types = {Car.class})
public interface CarName {
    String getName();
}

但我无法得到明确的价值观,任何想法?

谢谢:)

2 个答案:

答案 0 :(得分:1)

如果您需要一个独特的汽车列表,您需要做的就是这样的查询方法:

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

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

答案 1 :(得分:0)

我找到了一个(丑陋的)解决方法,使用jpql:

@Query(value = "select c from Car C WHERE c.id IN (SELECT min(ca.id) FROM Car ca Group by ca.name)")