Я пытаюсь выполнить вложенные вызовы базы данных, используя пружинный веб-поток / реактор, чтобы вернуть моно вложенных объектов (пользователя с его ролями).
Сценарий выглядит следующим образом:
- извлечение строки пользователя с именем пользователя из базы данных;
- сопоставление строки пользователя с User POJO;
- извлечение ролей пользователя по идентификатору пользователя;
- сопоставить роли со списком ролей;
- установить сопоставленные роли для пользователя POJO;
- вернуть моно пользователя.
Сценарий, описанный выше, должен быть выполнен без блокировки (я знаю, что отображение - это такая небольшая блокировка :)).
public Mono<User> retrieveByUsername(String username) {
return databaseClient.execute(usersQueries.getProperty("users.select.by.username"))
.bind("username", username.toLowerCase())
.map((row, meta) -> UserRowMapper.mapRow(row, meta))
// here goes nested database query to retrieve roles and set them to retrieved user
// and return Mono<User>
.one();
}
Заранее благодарю за помощь.