我有一个存储库,该存储库返回一个通量,并希望将结果设置为另一个需要列表的对象。还有其他方法可以将结果作为列表而不阻塞吗?
该块正在工作,但需要很长时间。
public class FluxToListTest {
@Autowired PostRepository postRepository;
public void setUserPosts(User user) {
user.setPostList(postRepository.findAllByOrderId(user.getId()).collectList().block());
}
}
interface PostRepository {
Flux<Post> findAllByOrderId(final UUID userId);
}
@Data
class User {
UUID id;
List<Post> postList;
}
class Post {
UUID id;
String content;
}
答案 0 :(得分:0)
简而言之-否。
您无需从List
中提取Flux
。
如果您已开始使用Reactor Streams,请继续使用它。
尝试以下代码:
public void setUserPosts(User user) {
postRepository.findAllByOrderId(user.getId())
.collectList()
.doOnNext(user::setPostList)// (1)
.subscribe(); // (2)
}