如何解决java.util.NoSuchElementException:不存在值 Spring JPA
我在 Spring Boot 的世界中相对较新,并且在将数据存储在我的项目的数据库中时遇到了问题。我有这些实体:航班 -(航班号,登机口,机场出发,机场到达等),乘客(护照号码,姓名,姓氏等),机票(机票号码,passport_number(外键引用乘客表),flight_number(外键引用航班表)) 和行李(id,票号(外键引用机票表))。当我要预订时,首先要保存乘客的数据,然后保存机票的数据(使用新乘客的passport_number)并在最后保存有关行李的数据(也使用新乘客的passport_number),我希望整个过程像交易一样。但我不断收到错误java .util.NoSuchElementException:不存在值 在 java.base/java.util.Optional.get(Optional.java:141) ~[na:na] 保存乘客时。这是代码。任何建议如何解决这个问题?这是我试图保存数据的控制器中的代码。非常感谢。
@PostMapping("/confirmTicket")
@Transactional
public String confirmTicket(HttpServletRequest req) {
Passenger passenger = (Passenger) req.getSession().getAttribute("passenger");
Flight flight = (Flight) req.getSession().getAttribute("flight");
Passenger passengerNew = passengerService.save(passenger.getpassport_number(),passenger.getFirst_name(),passenger.getLast_name(),passenger.getEmail(),passenger.getAddress(),passenger.getPhone_number(),passenger.getAccount_number()).get();
Ticket ticket = ticketService.save(Integer.parseInt(req.getSession().getAttribute("seat").toString()),flight.getPrice(),Class.valueOf(req.getSession().getAttribute("class").toString()),"",passengerNew,flight).get();
luggageService.save(LuggageType.valueOf(req.getSession().getAttribute("luggage").toString()),Integer.parseInt(req.getSession().getAttribute("weight").toString()),ticket);
return "redirect:/home";
}
解决方法
如果 xyz 为 null ,则
xyz.get() 方法返回此错误。 passengerService.save(....) 返回空值,请正确检查此服务方法
,您在 Optional 上调用 get
而没有先检查 Optional 是否存在。在空的 Optional results in a NoSuchElementException
get
要么先调用 isPresent
,要么改用 orElse
。
Optional<String> emptyOptional = Optional.ofNullable(null);
Optional<String> optional = Optional.of("Not empty");
emptyOptional.get(); // NoSuchElementException
optional.get(); // "Not empty"
emptyOptional.orElse(null); // null
optional.orElse(null); // "Not empty"
emptyOptional.orElse("default value"); // "default value"
optional.orElse("default value"); // "Not empty"
emptyOptional.isPresent(); // false
optional.isPresent(); // true
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。