我正在嘗試運行以下基本JPA / EJB代碼:public static void main(String[] args){ UserBean user = new UserBean(); user.setId(1); user.setUserName("name1"); user.setPassword("passwd1"); em.persist(user); }我收到此錯誤:javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.JPA.Database有任何想法嗎?我在互聯(lián)網(wǎng)上搜索,發(fā)現(xiàn)的原因是:這是由創(chuàng)建對象的方式引起的,即,如果您顯式設(shè)置ID屬性。刪除ID分配即可解決此問題。但是我沒有得到,我必須修改什么才能使代碼正常工作?
3 回答

DIEA
TA貢獻(xiàn)1820條經(jīng)驗 獲得超2個贊
發(fā)生此錯誤是因為設(shè)置了對象的ID。Hibernate區(qū)分臨時對象和分離對象,并且persist僅適用于臨時對象。如果persist斷定對象是分離的(因為設(shè)置了ID,它將分離),它將返回“分離的對象傳遞給持久化”錯誤。您可以在此處和此處找到更多詳細(xì)信息。
但是,這僅在您指定要自動生成的主鍵時適用:如果將該字段配置為始終手動設(shè)置,則您的代碼將起作用。
添加回答
舉報
0/150
提交
取消