java - 如何在 Spring Data Cassandra 中对数据进行分页?

标签 java cassandra spring-data spring-rest

我使用了 CassandraRepository,但无法对数据进行分页。

存储库:

@Repository
public interface AccountDaoInter extends CassandraRepository<Account,String> {
}

CassandraRepository中有一个方法findAll(Pageable pageable);。 (返回类型切片<>)

我使用 CassandraPageRequest 创建 Pageable。

服务:

@Override
public List<AccountDTO> findAll(Integer page){
    Slice<Account> accounts = accountDaoInter.findAll(CassandraPageRequest.of(page,10));

    return accounts
            .stream()
            .map(account -> modelMapper.map(account,AccountDTO.class)).collect(Collectors.toList());

}

Controller :

@GetMapping
public ResponseEntity<List<AccountDTO>> findAll(@RequestParam(name = "page") Integer p){
    return ResponseEntity.ok(accountServiceInter.findAll(--p));
}

当页面值为1时,结果还可以。

当页面值为 2 或更高时,我收到内部服务器错误。

错误:

“无法为首页 (0) 以外的索引页面创建 Cassandra 页面请求。”

Error picture

Project

最佳答案

Cassandra 不支持获取随机页面,因为 Spring Data 会抛出 InvalidArgumentException。您应该获取第一页,然后迭代,直到到达请求的页面。您可以在有关分页的 Java 驱动程序文档 ( link ) 中找到有关它的更多信息以及此行为背后的基本原理。

关于java - 如何在 Spring Data Cassandra 中对数据进行分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60769877/

相关文章:

Java索引越界异常索引:2,大小:2

java - JMockit 没有。 API 调用次数

mysql - DataStax sqoop 从 MySQL 导入到 Cassandra - 无法访问导入的数据

java - 带有 Cassandra 的 Java 驱动程序的多键空间

spring-data - 无法获得Redis的连接Spring数据Redis的模板

java - AKKA 需要在 kubernetes 服务中进行端口转发

java - MyBatis : query java. util.Date 与 MYSQL 数据库上的 DATE 类型

python - CQLSH 导入错误 : cannot import name ensure_str

xml - Spring 数据 xml 配置模式验证错误

java - Spring Data 中 MongoOperations 中的 findOne 方法的行为是什么?