如何在springwebflux中实现级联方法

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

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

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

在authorservice也一样:

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

和genreservice:

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

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

暂无答案!

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

相关问题