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

Spring Data Cassandra not allowing to fetch page 2 without pageState

我正在开发基于 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 design/usage 原则的事情?

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

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

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

Cassandra 支持仅通过获取下一页来进行分页。 Limit/offset 不适用。

Cassandra repositories support paging and sorting for paginated and sorted access to the entities. Cassandra paging requires a paging state to forward-only navigate through pages. A Slice keeps track of the current paging state and allows the creation of a Pageable to request the next page.

也就是说,你问题的答案

Does this mean Spring data Cassandra is designed to fetch only from page one and if we want next pages do we have to cache pageState and fetch next ones?

是的。

Spring 中的分页数据假定通过 limit/offset 分页,因为大多数受支持的数据存储都遵循此模式。 Cassandra 中的分页更遵循 Iterator 风格。