是否可以要求对结果进行排序但不分页?
我有这个:
public interface SampleRepository extends PagingAndSortingRepository<Sample, Integer> {
}
但是调用http://localhost:8080/data/samples?sort=name,desc
时,结果会自动分页,但我不希望分页。
答案 0 :(得分:0)
您可以向项目添加Querydsl Spring Data扩展,然后从QuerydslPredicateExecutor
扩展存储库:
public interface SampleRepository extends PagingAndSortingRepository<Sample, Integer>, QuerydslPredicateExecutor<Sample> {
}
之后,您可以发出这样的请求:
/samples?sort=name,desc
要在项目中使用Querydsl,请将其添加到pom.xml:
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<scope>provided</scope>
</dependency>
<build>
<plugins>
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/annotations</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
然后编译项目。
更多信息为here。
答案 1 :(得分:0)
PagingAndSortingRepository提供了Iterable<T> findAll(Sort sort)
方法,该方法返回按给定选项排序的所有实体。
只需这样声明您的SampleRepository
:
public interface SampleRepository extends PagingAndSortingRepository<Sample, Integer> {
List<Sample> findAll(Sort sort)
}
例如JpaRepository就是这样做的。
http://localhost:8080/data/samples?sort=name,desc
然后应映射到SampleRepository.findAll(Sort sort)
并按照您的意愿进行操作。
如果不是这种情况,您还可以添加findBy *方法:
@RestResource(path = "asList", rel = "asList")
public List<Sample> findAllAsList(Sort sort);
并致电http://localhost:8080/data/samples/search/asList/samples?sort=name,desc