0

您好,我正在尝试将一行保存到我的数据库中,我整天都在保存!这是我的实体

OrderDetails 实体:https ://pastebin.com/HAGVUVEF

类别实体:https ://pastebin.com/AWvbFKV0

当我尝试在 CheckoutServe 将 OrderDetails 列表保存到数据库时,我收到以下错误

2021-04-02 01:15:03.961 ERROR 9076 --- [o-8080-exec-111] o.s.b.w.servlet.support.ErrorPageFilter  :
Forwarding to error page from request [/user/checkout/process] due to exception [detached entity
passed to persist: coffeeshop.entity.Category; nested exception is
org.hibernate.PersistentObjectException: detached entity passed to persist:
coffeeshop.entity.Category]
org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist:
coffeeshop.entity.Category; nested exception is org.hibernate.PersistentObjectException: detached
entity passed to persist: coffeeshop.entity.Category

好吧,我正在尝试通过这种方法保存 OrderDetails 列表

    private void setOrderToOrderDetails(Orders order, List<OrderDetails> cart) {
    for (OrderDetails orderDetail : cart) {
        orderDetail.setOrder(order);
        orderDetailsRepo.save(orderDetail);
    }
}

请注意,当我在购物车的控制器上使用相同的方法时,它工作得很好,在这种情况下,我得到了上面的错误。PS。如果我的 OrderDetails 对象在他的类别列表中没有任何类别,那没关系,并且保存成功

4

1 回答 1

0

从订单详细信息中删除类别属性中的 (cascade = CascadeType.ALL)。它试图在数据库中持久化一个已经持久化(所以它是分离的)的类别。您不想重新创建类别,因为它在其他实体之间共享。Cascade ALL 还包含 PERSIST,它将尝试再次保存类别。

固定在这里,谢谢!

于 2021-04-06T10:05:54.970 回答