Spring Data Cassandra分页

时间:2018-09-18 03:18:00

标签: spring-boot cassandra spring-data cassandra-3.0 spring-data-cassandra

有人知道如何在Spring Data Cassandra中实现分页吗?

我尝试了所有可能的替代方法来实现我的桌子的分页。 stackoverflow答案之一表示未直接提供。 Paging SELECT query results from Cassandra in Spring Boot application

根据文档(https://docs.spring.io/spring-data/cassandra/docs/current-SNAPSHOT/reference/html/#cassandra.repositories.queries),CrudRepository提供了带有Pageable的方法。 org.springframework.data.repository.CrudRepository不提供。

我正在使用Cassandra 3.11.3和Spring Boot 1.5.1.RELEASE。 可以为我提供Spring Data Cassandra的简单分页演示吗?

1 个答案:

答案 0 :(得分:0)

Spring Data Cassandra中的分页以“仅转发”方式工作,就像iterable接口的工作方式一样。

    @Autowired
    PersonRepository personrepo;

    @GetMapping("/all/{page}")
    public List<Person> getPaginated(@PathVariable Integer page) {
        int currpage = 0, size = 2;
        Slice<Person> slice = personrepo.findAll(CassandraPageRequest.first(size));
        while(slice.hasNext() && currpage < page) {
            slice = personrepo.findAll(slice.nextPageable());
            currpage++;
        }

        return slice.getContent();
    }

您的存储库所在的位置:

public interface PersonRepo extends CrudRepository<Person, Integer> {

    Slice<Person> findAll(Pageable pr);

}

因此,您一直在查询结果,直到到达所需的数据位置为止。