我正在尝试为我的仓库使用ReactiveCassandraRepository
接口。当我尝试像这样添加findAll
方法时:
public interface MatchRepository extends ReactiveCassandraRepository<Match, UUID> {
Flux<Match> findAll(Pageable pageable);
}
我收到了这个错误消息:
Error creating bean with name 'matchRepository' defined in MatchRepository defined in
@EnableReactiveCassandraRepositories declared on CassandraReactiveRepositoriesRegistrar.EnableReactiveCassandraRepositoriesConfiguration:
Could not create query for public abstract reactor.core.publisher.Flux
MatchRepository.findAll(org.springframework.data.domain.Pageable);
Reason: No property 'findAll' found for type 'Match'
如何在Sping Boot 中使用Pageable实现React式cassandra存储库?有相关文件吗?
1条答案
按热度按时间ovfsdjhp1#
分页和响应
Sping Boot Data Cassandra在reactive中不提供任何分页功能。https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/reactive/package-summary.html
在这两种情况下,当您用尽结果集时,您都需要进行预加载和下一页获取。
在Reactive中,每个记录都有一个回调/事件作为记录流/流量,因此没有开始也没有结束,页面的概念没有意义。
可能的解决方案
现在要获取一个表中元素的子集,比如100个元素中从15到25个元素,需要一个技巧调用
limit()
,但是你必须使用Flux<>
。您可能需要访问CassandraOperations
更多建议
findAll()
。Cassandra可以存储数十亿条记录。你正在做一个完整的扫描表(非常慢),你可能永远无法在内存中处理。