我使用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();
}
但我无法得到明确的价值观,任何想法?
谢谢:)
答案 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)")