0

我与 R2DBC 合作,我需要执行查询,根据请求返回我的实体的 Flux,之后我需要将此实体转换为 DTO,但要创建 DTO,我需要为每个实体对数据库进行另一个查询,这从另一个表返回一些特殊信息,例如:

当 Id 总数超过 512 时,此代码不起作用

 orderRepository.findByIds(listIds).flatMap{ order->
        eventRepostiry.findByOrderId(order.id).map{events->
           entityToDtoMapper.map(order,events,OrderWithEventsDto::class.java)
        }
    } 

concatMap 没有帮助。

但是这段代码有效

orderRepository.findByIds(listIds).collectList().flatMapMany{orders->
        Flux.fromIterable(orders)
    }.flatMap{ order->{
          eventRepository.findByOrderId(order.id).collectList().flatMapMany{ events->
              Flux.fromIterable(events)
          }.map { event->
              entityToDtoMapper.map(order,events,OrderWithEventsDto::class.java)
          }
       }
    }

我认为这个问题有更好的解决方案。我应该如何正确地进行这些查询?

4

0 回答 0