当前位置: 首页 > 知识库问答 >
问题:

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

陈富
2023-03-14

使用reactivecrudepository分页已经有问题了。接受的解决方案适用于采用findBy格式的查询。项目文档还引用了以下用法:

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

例158。用于持久化个人实体的基本存储库接口

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个答案

濮阳祯
2023-03-14

首先findAll(可分页)是PagingAndSortingRepository的一个方法。Spring数据支持使用findBy的方法查询,该方法与findAll(可分页)无关。

目前,反应式Spring数据MongoDB不支持任何方法,比如findAll(pageable:pageable),但有一种方法可以做到这一点。

interface CustomerRepository : ReactiveSortingRepository<Customer, String> {
    fun findByIdNotNull(pageable: Pageable): Flux<Customer>
}   

你可以从这里阅读更多细节

 类似资料:
  • 我尝试创建一些基于反应式堆栈(反应器WebFlux)的基本Spring 5应用程序。 我的下一个目标是实现能够: 保存书籍。 查找所有图书。 我的存储库需要涵盖以下场景: 方案 A: 没有人订阅FindAll 有人保存了一本书(id=1) Client1订阅FindAll 书籍(id=1)被推送到Client1(Client1保持订阅状态,流未完成!) 有人保存了一本书(id=2) 书籍(id=2

  • 无法对JpaSpecificationExecutor存储库使用findAll(规范,分页)方法。我将存储库接口设置为: 每当我调用EmployeeRepository.findall(规范,分页)时;抛出此错误: 这是StackTrace: 完整代码:https://github.com/sanketkd/specificationexecutor 存储库:

  • 我使用SpringDataMongo作为ORM来访问我的MongoDb。我需要阅读一个MongoDb集合,其中包含我不管理内容及其有效性的文档。我面临一个问题:文档并非都是有效的,当我使用“findAll”方法时,我只捕获了一个异常。我希望找到所有有效的文档并拒绝无效的文档,而不是这种行为。 例如,我有一个带有原始布尔值的bean,在文档中,该字段被设置为String类型。因此,当我使用findA

  • 我想在存储库中使用findAll方法,但我希望它只返回具有特定值的实体。例如,我希望它只返回活动的实体=1。有办法吗? 现在,我必须为我所有的存储库编写如下内容: 我没有使用findOne方法,而是在我所有的存储库中编写: 有没有更好的方法对所有查询应用一揽子过滤器?

  • 正在执行查询,但未得到任何结果。 路由器:-api/v1/service/appt/usr/{usr_id} 存储库代码, 从日志中查询, 项目表中的数据, 邮递员请求, 不确定这有什么问题。它不会返回记录。

  • 问题内容: 我创建了一个简单的存储库,其中包含系统中的所有人员,一切似乎都正常运行。我可以根据给定的键和值添加,删除甚至取回单个人,但是由于某种原因,我无法直接取回存储在存储库中的所有人。我尝试通过使用findAll()方法来执行此操作,该方法应返回一个可迭代的对象。然后,我尝试使用可迭代对象进行迭代,并将每个人存储在要函数返回的arraylist中。 打印线打印“ 3”,因此存储库不为空,但在以