从CrudRepository删除不适用于子对象

时间:2019-03-26 14:19:54

标签: spring rest jpa

我的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);
  }

1 个答案:

答案 0 :(得分:0)

在您的orphanRemoval=true批注中添加@OneToMany选项

相关问题