Правильный способ выполнить два запроса в последовательности в r2dbc - PullRequest
0 голосов
/ 23 марта 2020

Я работаю с R2DB C, и мне нужно выполнить запрос, который по запросу возвращает поток моих сущностей, и после этого мне нужно преобразовать эти сущности в DTO, но для создания DTO мне нужно сделать еще один запрос к база данных для каждой сущности, которая возвращает некоторую специальную информацию из других таблиц, например:

Этот код не работает, когда общее количество идентификаторов превышает 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)
          }
       }
    }

Я думаю, что есть лучшее решение этой проблемы. Как я должен делать эти запросы правильно?

...