CassandraPageRequest 的序列化

Serialization of CassandraPageRequest

我在我的项目中使用 spring-data-cassandra,我想提供类似分页的功能(没有随机访问,没有特定页面 select - 只是向前抓取)。我可以使用此 PR 中描述的方法实现此效果:

https://github.com/spring-projects/spring-data-cassandra/pull/114

但是,我想序列化 Slice.nextPageable() 函数返回的 Pageable 对象,以通过 REST 接口公开此功能。这可能吗?

一种解决方案是将 Pageable 对象强制转换为 CassandraPageRequest,然后使用 .getPagingState 检索所需的对象。序列化后,可以从字符串创建 PagingState 并添加页面大小以创建 PageRequest。有点棘手且没有记录,但有效。请记住检查下一页是否存在以及 Pageable 是否真的是 CassandraPageRequest。示例代码如下:

// Serialize pageabele
if (isNull(pageable) || pageable.isUnpaged() || !(pageable instanceof 
    CassandraPageRequest)) {
        return null;
}

final CassandraPageRequest cassandraPageRequest = ((CassandraPageRequest) 
pageable);
if (isNull(cassandraPageRequest.getPagingState())) {
    return null;
}

return cassandraPageRequest.getPagingState().toString();

// Create request from serialized object
CassandraPageRequest.of(PageRequest.of(0, pageSize),
        PagingState.fromString(serializedPagingState));

这也是 SpringData Jira 上的问题。 https://jira.spring.io/browse/DATACASS-565#add-comment