簡體   English   中英

javax.persistence.PersistenceException:org.hibernate.PersistentObjectException:傳遞給持久對象的分離實體?

[英]javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist?

我有如下的員工班級

@Entity
public  class Employee{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
id;
Department dept;
Address add;
@JoinColumn(name = "manager_emp_id", insertable = false, updatable = false)
Manager Employee;
//other fields and their getters and setters

}

當我調用entityManager.persist(Employee emp)來堅持時,我得到以下錯誤

javax.persistence.PersistenceException:org.hibernate.PersistentObjectException:傳遞給持久對象的分離實體:com.myComp.Employee

我驗證的employee.id為null或0。 所以我不明白為什么將Employee視為獨立實例而不是瞬態實例?

可以因為它的某個成員變量(而不是Employee)的ID為非零值而休眠而試圖休眠嗎? 如果是,我可以得到哪個確切的類是分離實例,因為有很多成員變量?

所以我不明白為什么將Employee視為獨立實例而不是瞬態實例?

我也不能告訴您,因為您的代碼示例太簡短了(從語法上講也是不正確的)。

可以因為它的某個成員變量(而不是Employee)的ID為非零值而休眠而試圖休眠嗎?

有可能。

如果是,我可以得到哪個確切的類是分離實例,因為有很多成員變量?

這已經有。 根據您發布的異常,它是Employee的一個實例。 根據給定的信息,我不得不猜測,您的員工也引用了自己(也許通過部門?)。 如果您沒有級聯持久性操作,則當試圖保留其中一個較低級別的員工時,您可能會遇到此異常。 但是如前所述,您的樣本過於簡短和不完整,無法真正為您提供完整的答案。

猜測但:經理可能也是雇員,當您在新的Employ objcet上設置經理時,很可能您正在使用現有的對象,但沒有從同一EnityManger中檢索它(或未裝滿)。 和例外。 沒有您的DAO代碼或其他實體,這只是猜測。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM