Как удалить объект в отношении один-ко-многим?JAVA

Программисты JAVA общаются здесь
Anonymous
Как удалить объект в отношении один-ко-многим?

Сообщение Anonymous »

Я реализую небольшую систему электронной коммерции, но столкнулся со следующей проблемой: я не могу удалить объекты с отношениями один-ко-многим.
У меня есть класс корзины покупок, который выглядит следующим образом:

Код: Выделить всё

@Entity
@Table(name = "cart")
public class Cart extends NameEntity {

@OneToMany(mappedBy = "cart",cascade = {CascadeType.ALL},orphanRemoval = true)
private List items = new ArrayList();

public void addItem(Item item) {
item.setCart(this);
this.items.add(item);
}

public BigDecimal getTotal() {
if (items.isEmpty())
return BigDecimal.ZERO;
double total = 0;
for (Item item : items) {
total += item.getCount() *
item.getProduct().getPrice().doubleValue();
}
return BigDecimal.valueOf(total);
}

public Item get(Integer id) {
for (Item item : items) {
if (Objects.equals(item.getId(), id))
return item;
}
throw new NoSuchElementException("暂未找到钙元素");
}

public void removeItem(Item item) {
this.items.remove(item);
}
У меня также есть объект item, представляющий данные о продукте в корзине:

Код: Выделить всё

@Entity
@Table(name = "buy_item")
public class Item extends IDEntity {

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cart_id",nullable = false)
private Cart cart;

@OneToOne(fetch = FetchType.LAZY,optional = false)
@JoinColumn(name = "product_id",unique = true)
private Product product;

private int count;

@CreationTimestamp
@Column(name = "order_time")
private LocalDateTime orderTime;
}
В основном я хочу реализовать логику покупок в корзине покупок.
Моя логика покупок в корзине покупок выглядит следующим образом:

Код: Выделить всё

 @PostMapping("/buy/{id}")
public String pay(@PathVariable("id") Integer itemId,
@SessionAttribute(name = "user") User user)
{

User u = userRepo.findById(user.getId()).orElseThrow();
Item item = itemRepo.findById(itemId).orElseThrow();
Cart cart = u.getCart();
cart.removeItem(item);
OrderInfo orderInfo = itemToOrderInfo(item);
Order order = new Order();
order.setState(OrderState.PACKING);
order.setShippingAddress(u.getProfile().getAddress());
order.addOrderInfo(orderInfo);
u.addOrder(order);
orderRepo.save(order);

cartRepo.save(cart);
return "redirect:/order/list";
}
Когда я нажимаю кнопку «Купить», в этот интерфейс будет отправлен запрос. Мои ожидания:
1. Для получения корзины покупок пользователя;
2. Удалить купленные товары в корзине;
3. Для формирования заказа;
4. Сохранить заказ;
5. Чтобы сохранить корзину.
Однако я обнаружил, что товары в моей корзине все еще существуют. Что я могу попробовать дальше?

Вернуться в «JAVA»