Spring Data Mongodb反应式存储库中的findAll方法分页

4

已经有一个关于使用ReactiveCrudRepository的分页问题的问题。被接受的解决方案适用于遵循findBy格式的查询。该项目文档也提到了这种用法:

https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo.reactive.repositories.usage

Example 158. Basic repository interface to persist Person entities

public interface ReactivePersonRepository extends
ReactiveSortingRepository<Person, String> {

  Flux<Person> findByFirstname(String firstname);                     


  Flux<Person> findByFirstname(Publisher<String> firstname);          


  Flux<Person> findByFirstnameOrderByLastname(String firstname,
Pageable pageable); 

  Mono<Person> findByFirstnameAndLastname(String firstname, String
lastname);       

  Mono<Person> findFirstByLastname(String lastname);                  
}
问题在于这对于findAll不起作用。
interface CustomerRepository : ReactiveCrudRepository<Customer, String> {
    fun findAll(pageable: Pageable): Flux<Customer>

异常:

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property findAll found for type Customer!

Spring Data MongoDB是否以某种方式支持此功能?

1个回答

6
首先,findAll(Pageable pageable)PagingAndSortingRepository 接口的一个方法。Spring Data 支持使用 findBy 来进行方法查询,与 findAll(Pageable pageable) 无关。
目前,Reactive Spring Data MongoDB 不支持任何类似于 findAll(pageable: Pageable) 的方法,但是可以通过一种方式来实现。
interface CustomerRepository : ReactiveSortingRepository<Customer, String> {
    fun findByIdNotNull(pageable: Pageable): Flux<Customer>
}   

您可以从这里阅读更多详细信息。

@codependent 抱歉,我错了,我更新了我的答案。 - Eklavya
请注意,它不能与类似“findAllPaged”的东西一起工作。 它与示例中的“findByIdNotNull”一起工作。 - Aleris
@Eklavya,它有任何变化吗? - Denys Bondarenko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接