在 Flux/Mono 中调用异步任务(Spring boot webflux)



我有 2 个实体用户、用户详细信息和 2 个存储库:

@Getter
@Setter
@NoArgsConstructor
class User {
    @Id
    private Long id;
    private String fullname;
}
@Getter
@Setter
@NoArgsConstructor
class UserDetails {
    @Id
    private Long id;
    private Long userId;
    @Transient
    private String fullname;
    private String hobby
    // and some more ...
}
@Repository
public interface UserRepo extends ReactiveCrudRepository<User, Long>;
@Repository
public interface UserDetailsRepo extends ReactiveCrudRepository<UserDetails, Long>;

我希望从用户实体获取全名的用户详细信息列表,所以我在路由函数中编码:

userDetailsRepo.findAll()
    .map(userDetails -> {
        userRepo.findById((userDetails.getUserId())
            .subscribe(user -> userDetails.setFullname((user.getFullname))
        return userDetails;
    }

但全名是空的。

每个人都能帮我吗

非常感谢

对不起,我的英语太糟糕了

感谢JB Nizet和您的建议。我编辑代码,它可以工作

userDetailsRepo.findAll()
    .flatMap(userDetails -> {
        return userRepo.findById(userDetails.getUserId())
        .map(user -> {
            userDetails.setFullname(user.getFullname());
            return userDetails;
        }
    }

最新更新