Hibernate OneToOne关系java.lang.NullPointerException
我正在为我的Spring项目制作cart,我有用户实体、cart和books,一个用户只能有一个cart,所以我在用户和cart之间建立了一个one关系,许多cart可以包含许多书籍,所以我在cart和book之间创建了许多关系我的代码: 账簿实体:Hibernate OneToOne关系java.lang.NullPointerException,java,spring,hibernate,set,hibernate-mapping,Java,Spring,Hibernate,Set,Hibernate Mapping,我正在为我的Spring项目制作cart,我有用户实体、cart和books,一个用户只能有一个cart,所以我在用户和cart之间建立了一个one关系,许多cart可以包含许多书籍,所以我在cart和book之间创建了许多关系我的代码: 账簿实体: @ManyToMany @JoinTable( name = "books_in_cart", joinColumns = { @JoinColumn(name = "cart_id
@ManyToMany
@JoinTable(
name = "books_in_cart",
joinColumns = { @JoinColumn(name = "cart_id")},
inverseJoinColumns = { @JoinColumn(name = "book_id")}
)
private Set<Cart> inCarts = new HashSet<>();
我用于将书本添加到用户购物车的代码:
@PostMapping(value = "/addToCart")
@Secured("USER")
public String addToCart(@RequestParam(name = "ids") int id,Principal principal){
System.out.println(principal.getName());
User login = userDao.getByLogin(principal.getName());
Book book = service.getById(id);
login.getUserCart().setUser(login);
login.getUserCart().getBooks().add(book);
userDao.save(login);
return "redirect:/books";
}
我得到一个例外:
java.lang.NullPointerException
controller.libraryController.addToCart(libraryController.java:170)
sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
映射肯定是错误的,可能整个模型都是错误的,因为看起来您根本没有连接表:
joinColumns = { @JoinColumn(name = "cart_id")},
inverseJoinColumns = { @JoinColumn(name = "book_id")}
这意味着,一个实体在一个表中有一个名为cart\u id
的id,在另一个表中有一个名为book\u id
的id,这没有任何意义。这就是抛出异常的原因
您需要修复您的模型,包括数据库和映射。这是一本很好的读物。您的多人映射错误()。第170行是空的,但我们不知道那是哪一行,所以很难帮上忙。
@PostMapping(value = "/addToCart")
@Secured("USER")
public String addToCart(@RequestParam(name = "ids") int id,Principal principal){
System.out.println(principal.getName());
User login = userDao.getByLogin(principal.getName());
Book book = service.getById(id);
login.getUserCart().setUser(login);
login.getUserCart().getBooks().add(book);
userDao.save(login);
return "redirect:/books";
}
joinColumns = { @JoinColumn(name = "cart_id")},
inverseJoinColumns = { @JoinColumn(name = "book_id")}