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

Spring Data Cassandra不允许在没有pageState的情况下获取第2页,cassandra,spring-data-cassandra,Cassandra,Spring Data Cassandra,我正在开发基于ApacheCassandra的Spring应用程序。我使用Spring数据Cassandra作为持久层。当我尝试获取非零页面(如中所述)时,我得到一个IllegalArgumentException,表示无法为第一个页面(0)以外的索引页面创建Cassandra页面请求。它是从 public static CassandraPageRequest of(int page, int size) { Assert.isTrue(page == 0, "Cannot creat

我正在开发基于ApacheCassandra的Spring应用程序。我使用Spring数据Cassandra作为持久层。当我尝试获取非零页面(如中所述)时,我得到一个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数据只从第一页获取,如果我们想要下一页,我们是否必须缓存pageState并获取下一页

如果这个框架不允许获取其他页面呢


是建筑原因还是技术原因?(文档没有提供这些信息。至少我们需要使用页面状态来获取下一页。)

Cassandra只通过获取下一页来支持分页。限制/偏移不适用

Cassandra存储库支持对实体进行分页和排序访问的分页和排序。Cassandra分页需要一个分页状态来只向前浏览页面。切片跟踪当前分页状态,并允许创建可分页的页面以请求下一页

也就是说,你的问题的答案是

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

是的


Spring数据中的分页假设通过limit/offset进行分页,因为大多数受支持的数据存储都遵循这种模式。Cassandra分页更像是一种
迭代器
风格。

非常感谢您的快速回复和解决问题。您好,您能否与我分享您为缓存Cassandra分页状态而实施的缓存方法步骤?我无法将此Spring数据功能与此相协调。使用Spring数据时,我们总是必须获取页面0,然后从那里移动,而使用Java驱动程序,我可以提供一个(非零)页面状态,这仅仅是一个限制吗?是否计划org.springframework.data.cassandra.core.query.CassandraPageRequest将来支持非零页面?谢谢