Вызов асинхронной задачи во Flux / Mono (Spring boot webflux) - PullRequest
0 голосов
/ 31 марта 2019

У меня есть 2 сущности User, UserDetails и 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>;

Я хочу получить список UserDetails с полным именем от сущности User, поэтому я кодировал в Route Function:

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

Но полное имя всегда ноль.

Может ли каждый помочь мне

Большое спасибо

Извините, мой английский слишком плохой

1 Ответ

0 голосов
/ 31 марта 2019

Спасибо JB Nizet и вашему совету. Я редактирую код, и он работает

userDetailsRepo.findAll()
    .flatMap(userDetails -> {
        return userRepo.findById(userDetails.getUserId())
        .map(user -> {
            userDetails.setFullname(user.getFullname());
            return userDetails;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...