gpt4 book ai didi

java - Spring data rest 中自定义分页和排序的查询

转载 作者:搜寻专家 更新时间:2023-11-01 02:05:23 31 4
gpt4 key购买 nike

我正在使用 Spring data rest 并尝试使用 @Query 为两个重载的 findAll 方法自定义查询。但是,当我尝试这样做时,我收到此错误:

java.lang.IllegalStateException: Ambiguous search mapping detected. Both public abstract org.springframework.data.domain.Page courses.CourseRepository.findAll(org.springframework.data.domain.Pageable) and public abstract java.lang.Iterable courses.CourseRepository.findAll(org.springframework.data.domain.Sort) are mapped to /findAll! Tweak configuration to get to unambiguous paths!

按照惯例,调用这些方法时,URL 不包含 /findAll。用于检索未分类类(class)(但使用分页)的 URL 是

http://localhost:8080/v1/courses

排序是

http://localhost:8080/v1/courses?sort=title

下面是相关代码,非常简单:

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

我还尝试在 Course 实体上使用 @NamedQuery,但出现相同的错误消息。

编辑:

我发现 findAll(Pageable pageable) 方法具有“内置”排序功能,但它不会对结果进行排序。当我点击以下 URL 并尝试按标题排序时,结果显然没有按标题排序。但是,如果没有自定义 @Query,结果将被排序。

http://localhost:8080/v1/courses?sort=title

最佳答案

尝试

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

关于java - Spring data rest 中自定义分页和排序的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36181395/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com