我使用了 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 页面请求。”
最佳答案
Cassandra 不支持获取随机页面,因为 Spring Data 会抛出 InvalidArgumentException
。您应该获取第一页,然后迭代,直到到达请求的页面。您可以在有关分页的 Java 驱动程序文档 ( link ) 中找到有关它的更多信息以及此行为背后的基本原理。
关于java - 如何在 Spring Data Cassandra 中对数据进行分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60769877/