Spring Data Rest排序没有分页结果

时间:2018-06-20 17:10:49

标签: spring-data-rest

是否可以要求对结果进行排序但不分页?

我有这个:

public interface SampleRepository extends PagingAndSortingRepository<Sample, Integer> {
}

但是调用http://localhost:8080/data/samples?sort=name,desc时,结果会自动分页,但我不希望分页。

2 个答案:

答案 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