我与 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)
}
}
}
我认为这个问题有更好的解决方案。我应该如何正确地进行这些查询?