Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.util.NoSuchElementException:Spring JPA没有值_Java_Spring_Database_Spring Data Jpa - Fatal编程技术网

java.util.NoSuchElementException:Spring JPA没有值

java.util.NoSuchElementException:Spring JPA没有值,java,spring,database,spring-data-jpa,Java,Spring,Database,Spring Data Jpa,我在SpringBoot领域相对较新,在我的项目中将数据存储在数据库中有问题。我有这些实体:航班-(航班号、登机口、机场起飞、机场抵达等)、乘客(护照号、姓名等)、机票(机票号、护照号(外键参考乘客表)、航班号(外键参考航班表))和行李(id、机票号(外键参考机票表).当我想预订时,首先我想保存关于乘客的数据,然后保存关于机票的数据(使用新乘客的护照号码),最后保存关于行李的数据(也使用新乘客的护照号码)我希望整个过程像一个事务一样,但我不断地得到一个错误java.util.NoSuchElem

我在SpringBoot领域相对较新,在我的项目中将数据存储在数据库中有问题。我有这些实体:航班-(航班号、登机口、机场起飞、机场抵达等)、乘客(护照号、姓名等)、机票(机票号、护照号(外键参考乘客表)、航班号(外键参考航班表))和行李(id、机票号(外键参考机票表).当我想预订时,首先我想保存关于乘客的数据,然后保存关于机票的数据(使用新乘客的护照号码),最后保存关于行李的数据(也使用新乘客的护照号码)我希望整个过程像一个事务一样,但我不断地得到一个错误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";
    }

您正在对可选项调用
get
,而没有首先检查可选项是否存在。对空可选项调用
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
Optional-emptyOptional=可选的空值(null);
Optional Optional=Optional.of(“非空”);
emptyOptional.get();//NoTouchElementException
可选。get();/“非空”
emptyOptional.orElse(null);//null
可选。orElse(null);/“非空”
emptyOptional.orElse(“默认值”);/“默认值”
可选。orElse(“默认值”);/“非空”
emptyOptional.isPresent();//false
可选。isPresent();//true
xyz.get()方法在xyz为空时返回此错误。
passengerService.save(..)返回空值,请正确检查此服务方法

是的,我知道。但问题是,为什么我在保存数据库中的对象时会得到空值。仅凭控制器无法判断,请使用passengerService代码更新该问题,共享'passengerService.save(…)`实现。它似乎返回空
可选