java.util.NoSuchElementException:Spring JPA没有值
我在SpringBoot领域相对较新,在我的项目中将数据存储在数据库中有问题。我有这些实体:航班-(航班号、登机口、机场起飞、机场抵达等)、乘客(护照号、姓名等)、机票(机票号、护照号(外键参考乘客表)、航班号(外键参考航班表))和行李(id、机票号(外键参考机票表).当我想预订时,首先我想保存关于乘客的数据,然后保存关于机票的数据(使用新乘客的护照号码),最后保存关于行李的数据(也使用新乘客的护照号码)我希望整个过程像一个事务一样,但我不断地得到一个错误java.util.NoSuchElementException:没有值存在 在java.base/java.util.Optional.get(Optional.java:141)~[na:na]上保存乘客。这是代码。有什么建议可以解决这个问题吗?这是我试图保存数据的控制器的代码。非常感谢java.util.NoSuchElementException:Spring JPA没有值,java,spring,database,spring-data-jpa,Java,Spring,Database,Spring Data Jpa,我在SpringBoot领域相对较新,在我的项目中将数据存储在数据库中有问题。我有这些实体:航班-(航班号、登机口、机场起飞、机场抵达等)、乘客(护照号、姓名等)、机票(机票号、护照号(外键参考乘客表)、航班号(外键参考航班表))和行李(id、机票号(外键参考机票表).当我想预订时,首先我想保存关于乘客的数据,然后保存关于机票的数据(使用新乘客的护照号码),最后保存关于行李的数据(也使用新乘客的护照号码)我希望整个过程像一个事务一样,但我不断地得到一个错误java.util.NoSuchElem
@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(…)`实现。它似乎返回空
可选