есть метод который возвращает оптионал я указываю
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));
и будет вам счастье.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Пытаюсь создать фильтр, но не выходитВ файле web структуры проекта maven значение filter-servlet выделяет красным, как ошибку
Не выходит заставить регулярное выражение принимать только точкуВ строке присутствует как точка так и многоточие(при чем как в первом так...
Имеется класс с аннотацией @ConfigurationPropertiesВ нем находятся поля, которые подгружаются из файла
Есть клиент на java, который отправляет длинный json на сервер, который написан на pythonЕсли длина json'а не очень большая, то все нормально отправляется