我的RestController中有一个DELETE方法,需要从Cart删除CartItem对象。它们被映射为OneToMany关系,并且在从CrudRepository调用delete方法后,该项目保留在数据库中,并且我没有得到任何错误...
我尝试将CascadeType.ALL删除为CascadeType.REMOVE,还尝试从Principal对象获取购物车,还尝试了deleteById(Long id)和delete(CartItem cartItem),但没有任何帮助,项目仍在数据库中。
//CartItem repository
public interface CartItemRepository extends CrudRepository<CartItem, Long> {
CartItem getByCartItemId(Long id);
}
//Cart entity
@OneToMany(mappedBy = "cart", cascade = CascadeType.REMOVE, fetch = FetchType.EAGER)
private Set<CartItem> cartItems = new HashSet<>();
//CartItem entity
@ManyToOne
@JoinColumn(name = "cartId")
@JsonIgnore
private Cart cart;
//Rest method
@RequestMapping(value = "remove/{cartItemId}", method = RequestMethod.DELETE)
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void removeItemFromCart(@PathVariable (value = "cartItemId") Long
cartItemId){
cartItemRepository.deleteById(cartItemId);
}
答案 0 :(得分:0)
在您的orphanRemoval=true
批注中添加@OneToMany
选项