java嵌套的异常是org.hibernate.persistentobjectexception jpa spring boot

dauxcl2d  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(439)

你好,我正试图保存一行到我的数据库好吧,我花了一整天的时间保存!这是我的实体
orderdetails实体:https://pastebin.com/hagvuvef
类别实体:https://pastebin.com/awvbfkv0
当我尝试在checkoutserive将orderdetails列表保存到数据库时,出现以下错误

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

我正试图用这个方法保存orderdetails列表

  1. private void setOrderToOrderDetails(Orders order, List<OrderDetails> cart) {
  2. for (OrderDetails orderDetail : cart) {
  3. orderDetail.setOrder(order);
  4. orderDetailsRepo.save(orderDetail);
  5. }
  6. }

请注意,当我在cart的控制器上使用相同的方法时,它可以完美地工作,在本例中我得到了上面的错误。另外,如果我的orderdetails对象的categories列表中没有任何类别,则可以,并且保存成功

w3nuxt5m

w3nuxt5m1#

从order details中删除category属性中的(cascade=cascadetype.all)。它试图持久化一个已经在数据库中持久化(因此它被分离)的类别。您不想重新创建类别,因为它是在其他实体之间共享的。cascade all还包含persist,它将再次尝试保存类别。
修好了,谢谢!

相关问题