如何在springwebflux中实现级联方法

pqwbnv8z  于 2021-07-14  发布在  Java
关注(0)|答案(0)|浏览(161)

我有一个简单的crud应用程序与作者,流派,评论和图书领域实体。问题是:我不能正确地实现update方法。我为每个实体提供了一个带有putMap的控制器,该Map使用参数调用服务的update方法并返回结果。但后来我手动测试了一下,没有效果。看起来这些方法甚至没有被调用。我知道React流是懒惰的,但它应该被执行,否则我错过了一些东西。这是我的bookservice更新方法。

public Mono<Tuple2<Flux<Comment>, Book>> updateBook(String id, String title, String authorNameParameter,
                                                        String genreNameParameter) {
        return bookRepository.findById(id)
                .map(b -> commentRepository.saveAll(commentRepository.findByBook_Title(b.getTitle())
                        .flatMap(c -> Mono.just(c.setBook(title)))))
                .zipWith(bookRepository.findById(id).flatMap(b -> getAuthor(authorNameParameter)
                            .flatMap(a -> Mono.just(b.setAuthor(a)))
                            .flatMap(book -> Mono.just(book.setTitle(title)))
                            .flatMap(book -> getGenre(genreNameParameter)
                                    .flatMap(g -> Mono.just(book.setGenre(g))))));
    }

在authorservice也一样:

public Mono<Tuple2<Flux<Book>, Author>> updateAuthor(String id, String name) {
        return authorRepository.findById(id)
                .map(a -> bookRepository.findByAuthor_Id(a.getId())
                        .flatMap(b -> Mono.just(b.setAuthor(a.setName(name)))).flatMap(bookRepository::save))
                .zipWith(authorRepository.findById(id).flatMap(a -> Mono.just(a.setName(name)))
                        .flatMap(authorRepository::save));
    }

和genreservice:

public Mono<Tuple2<Flux<Book>, Genre>> updateGenre(String id, String name) {
        return genreRepository.findById(id)
                .map(g -> bookRepository.findByGenre_Id(g.getId())
                        .flatMap(b -> Mono.just(b.setGenre(g.setName(name)))).flatMap(bookRepository::save))
                .zipWith(genreRepository.findById(id).flatMap(g -> Mono.just(g.setName(name)))
                        .flatMap(genreRepository::save));
    }

authorservice和genreservice更新author/genre实体,但不更新book,bookservice不做任何事情。我只想更新相关的实体(流派->书,作者->书,书->评论)。
setter只是创建一个新的示例进行修改,对于React式编程来说更方便。
最后一个问题是:在我的例子中,如何使用springwebflux实现级联更新。可能是我对被动概念有一些误解。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题