我对springboot还比较陌生,在项目的数据库中存储数据时遇到了问题。我有这些实体:航班-(航班号、登机口、机场起飞、机场到达等)、旅客(护照号码、姓名、姓氏等)、机票(机票号码、护照号码(外键引用旅客表)、航班号码(外键引用航班表))和行李(身份证、机票号码(外键引用机票表)。当我要预订时,首先我要保存旅客的数据,然后保存机票的数据(使用新旅客的护照号码),最后保存行李的数据(也使用新旅客的护照号码),我希望整个过程像一个事务一样。但是我经常得到一个错误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";
}
2条答案
按热度按时间k3bvogb11#
如果xyz为null,则get()方法返回此错误。passengerservice.save(…..)返回空值,请检查此服务方法是否正确
oo7oh9g92#
你在打电话吗
get
在选项上,而不首先检查选项是否存在。打电话get
在一个空的可选值上,会导致nosuchelementexception任何一个电话
isPresent
先用还是先用orElse
相反。