我正在使用Spring数据休息,并尝试使用findAll
自定义两个重载@Query
方法的查询。但是,当我尝试这个时,我收到了这个错误:
java.lang.IllegalStateException:检测到不明确的搜索映射。公共抽象org.springframework.data.domain.Page courses.CourseRepository.findAll(org.springframework.data.domain.Pageable)和公共抽象java.lang.Iterable courses.CourseRepository.findAll(org.springframework.data.domain。排序)映射到/ findAll!调整配置以获得明确的路径!
调用这些方法时,URL按惯例不包含/findAll
。用于检索未排序课程(但使用分页)的URL是
和排序是
这是相关的代码,非常简单:
public interface CourseRepository extends PagingAndSortingRepository<Course, Long> {
@Override
@Query("SELECT c FROM Course c WHERE c.visible = 'Yes'")
Page<Course> findAll(Pageable pageable);
@Override
@Query("SELECT c FROM Course c WHERE c.visible = 'Yes'")
Iterable<Course> findAll(Sort sort);
}
我还尝试在课程实体上使用@NamedQuery
并使用相同的错误消息。
编辑:
我发现findAll(Pageable pageable)
方法有“内置”排序,但它没有对结果进行排序。当我点击以下URL并尝试按标题排序时,结果显然不按标题排序。但是,如果没有自定义@Query
,则会对结果进行排序。
答案 0 :(得分:4)
尝试
http://localhost:8080/v1/courses?sort=title,asc
http://localhost:8080/v1/courses?sort=title,desc
或者如果您使用较旧的Spring版本,请查看此文档:
http://docs.spring.io/spring-data/rest/docs/1.1.x/reference/html/paging-chapter.html
答案 1 :(得分:2)