есть метод который возвращает оптионал я указываю
public <R> Optional<R> db(String sql, List<Object> param, FunEx<PreparedStatement, R> fun) {
Optional rsl = Optional.empty();
try (var conn = source.getConnection();
var pr = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
this.forIdex(param, (index, value) -> dispat.get(value.getClass()).accept(index + 1, pr, value));
rsl.of(fun.apply(pr));
System.out.println(fun.apply(pr));
System.out.println(rsl.get());
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
return rsl;
}
и так у нас в методе есть функциональный метод который вернёт нам что-то к примеру объект юзер fun.apply(pr)
также я пробую ниже вывести в консоль этого юзера System.out.println(fun.apply(pr));
и в консоль я нормально вывожу
Users{id=59 createDate=2018-12-26T23:37:21.315052, name=sacha , login=alexmur07}
но почему я не могу добавить объект пользователя в оптионал?
rsl.of(fun.apply(pr)); - в это строчку я его добавляю и вот в этой строчке System.out.println(rsl.get());
я получаю
java.util.NoSuchElementException: No value present
будто элемент не был добавлен в оптионал да как так то????
public Users findById(Users users) {
return this.db(
"select * from users where id = ?", Arrays.asList(Integer.valueOf(users.getId())),
ps -> {
Users res = null;
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
res = new Users(String.valueOf(rs.getInt("id")), rs.getString("name"),
rs.getString("login"), rs.getTimestamp("create_date").toLocalDateTime());
}
} catch (SQLException e) {
LOGGER.error(e.getMessage(), e);
}
return res;
}
).orElse(new Users());
}
rsl.of(fun.apply(pr));
на самом деле транслируется в Optional.of(fun.apply(pr));
Этот метод создает новый инстанс Optional
.
Исправьте на
rsl = Optional.of(fun.apply(pr));
и будет вам счастье.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь создать фильтр, но не выходитВ файле web структуры проекта maven значение filter-servlet выделяет красным, как ошибку
Не выходит заставить регулярное выражение принимать только точкуВ строке присутствует как точка так и многоточие(при чем как в первом так...
Имеется класс с аннотацией @ConfigurationPropertiesВ нем находятся поля, которые подгружаются из файла
Есть клиент на java, который отправляет длинный json на сервер, который написан на pythonЕсли длина json'а не очень большая, то все нормально отправляется