你好,我正试图保存一行到我的数据库好吧,我花了一整天的时间保存!这是我的实体
orderdetails实体:https://pastebin.com/hagvuvef
类别实体:https://pastebin.com/awvbfkv0
当我尝试在checkoutserive将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);
}
}
请注意,当我在cart的控制器上使用相同的方法时,它可以完美地工作,在本例中我得到了上面的错误。另外,如果我的orderdetails对象的categories列表中没有任何类别,则可以,并且保存成功
1条答案
按热度按时间w3nuxt5m1#
从order details中删除category属性中的(cascade=cascadetype.all)。它试图持久化一个已经在数据库中持久化(因此它被分离)的类别。您不想重新创建类别,因为它是在其他实体之间共享的。cascade all还包含persist,它将再次尝试保存类别。
修好了,谢谢!