java.util.nosuchelementexception:spring jpa没有值

lkaoscv7  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(387)

我对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";
    }
k3bvogb1

k3bvogb11#

如果xyz为null,则get()方法返回此错误。passengerservice.save(…..)返回空值,请检查此服务方法是否正确

oo7oh9g9

oo7oh9g92#

你在打电话吗 get 在选项上,而不首先检查选项是否存在。打电话 get 在一个空的可选值上,会导致nosuchelementexception
任何一个电话 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

相关问题