有人知道如何在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的简单分页演示吗?
答案 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);
}
因此,您一直在查询结果,直到到达所需的数据位置为止。