private void removeCart(Cart cart) {
   for (CartItem cartItem : cart.getItems()) {
     cartItem.setProduct(null);
     cartItemRepository.saveAndFlush(cartItem);
   }
   cartRepository.delete(cart);
 }
 @RequestMapping("{id}/remove")
 public ModelAndView remove(@PathVariable("id") Long id, RedirectAttributes redirectAttributes) {
   List<Cart> carts = cartRepository.findByProductId(id);
   boolean okToErase = true;
   for (Cart cart : carts) {
     if (isCartToOld(cart.getCreated())) {
       removeCart(cart);
     } else {
       okToErase = false;
     }
   }
   if (okToErase) {
     productRepository.delete(id);
     redirectAttributes.addFlashAttribute("globalMessage", "Successfully deleted product");
   } else {
     redirectAttributes.addFlashAttribute(
         "globalMessage", "Can't delete product, there are still carts with them.");
   }
   return new ModelAndView("redirect:/products");
 }