【发布时间】:2021-08-02 09:35:49
【问题描述】:
我有以下场景:我有一个 ProductFamily,其中包含一组产品。
我从数据库加载 ProduktFamily,然后我想加载其产品并将它们插入 ProduktFamily.products。
在 Spring MVC 中很容易(因为 JPA),但在使用 Webflux 时我很挣扎。 我试过这个,但它不起作用。 ProduktFamily.products-set 为空。
服务:
public Flux<ProduktfamilyRS> getAllProduktFamilies() {
return produktfamilyDatabaseFacade.findAll()
.map(produktfamilyEntity2 -> dtoMapper.produktfamilyEntityToProduktfamilyRS(produktfamilyEntity2)) // <-- Mapsctruct Mapper
.concatMap(produktfamilyRS -> loadProducts(produktfamilyRS));
}
private Mono<ProduktfamilieRS> loadProducts(ProduktfamilieRS produktfamilieRS) {
Flux<ProduktEntity> byProduktfamilieId = produktDatabaseFacade.findByProduktfamilieId(produktfamilieRS.getId());
Flux<ProduktRS> produktRSFlux = byProduktfamilieId.map(produktEntity -> dtoMapper.produktEntityToProduktRS(produktEntity));
return Mono.just(produktfamilieRS).map(produktfamilieRS1 -> {
produktRSFlux.all(produktRS -> produktfamilieRS1.getProdukte().add(produktRS));
produktRSFlux.subscribe();
return produktfamilieRS1;
});
}
ProduktfamilyDatabaseFacade:
public Flux<ProduktfamilyEntity> findAll() {
return produktfamilyRepository.findAll();
}
ProduktfamilyDatabaseFacade:
public Flux<ProduktEntity> findByProduktfamilyId(Long produktfamilyId) {
return produktRepository.findAllByProduktfamilyId(produktfamilyeId)
.doOnNext(produktEntity -> log.info("Found Produkt '" + produktEntity.getName() + "' für Produktfamilie"));
}
有没有办法从 Mono 开始,然后遍历 Flux 以将每个 Product 添加到 Productfamily,然后返回 ProductfamilyRS?
谢谢
【问题讨论】:
标签: spring-webflux spring-data-r2dbc webflux