[英]javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist
[英]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.