Spring Data Cassandra不允许在没有pageState的情况下获取第2页

时间:2018-04-15 15:24:19

标签: cassandra spring-data-cassandra

我正在开发基于Apache Cassandra的Spring应用程序。我正在使用Spring Data Cassandra作为持久层。当我尝试按documentation中所述获取非零页面时,我收到IllegalArgumentException,说明无法为第一页(0)以外的索引页创建Cassandra页面请求。它被抛出,

public static CassandraPageRequest of(int page, int size) {
    Assert.isTrue(page == 0, "Cannot create a Cassandra page request for an indexed page other than the first page (0).");
    return of(page, size, Sort.unsorted());
}

图书馆的方法。

我做了违反Cassandra设计/使用原则的事情吗?

这是否意味着Spring数据Cassandra只能从第一页获取,如果我们想要下一页,我们是否必须缓存pageState并获取下一页?

如果为什么这个框架不允许获取其他页面?

是否存在架构或技术原因? (文档不提供这些信息。至少我们需要使用页面状态来获取下一个。)

1 个答案:

答案 0 :(得分:2)

Cassandra仅通过获取下一页来支持分页。限制/抵消不适用。

  

Cassandra存储库支持对实体的分页和排序访问进行分页和排序。 Cassandra分页要求分页状态仅向前导航页面。一个Slice跟踪当前的分页状态,并允许创建一个Pageable来请求下一页。

那就是你问题的答案

  

这是否意味着Spring数据Cassandra只能从第一页获取,如果我们想要下一页,我们是否必须缓存pageState并获取下一页?

是的。

Spring Data中的分页假定通过限制/偏移进行分页,因为大多数支持的数据存储都遵循此模式。卡桑德拉的分页更多遵循Iterator风格。