2016-07-22 56 views
0

分離的實體通過持久性錯誤休眠/ jpa 與this鏈接上的相同示例。爲什麼在分離的實體中分離傳遞持續?

public static void main(String[] args){ 
     UserBean user = new UserBean(); 
     user.setId(1); 
     user.setUserName("name1"); 
     user.setPassword("passwd1"); 
     em.persist(user); 
    } 

造成的原因是:設定ID都明確

的問題是爲什麼這個實體成爲超脫? 根據我的理解,當你創建一個新實體時,它是暫時的,當你試圖堅持它時,它會變得持久。那麼實體如何脫離,因爲脫離的實體目前不在持久化上下文中,而是在數據庫中?

如果我在某個地方出錯,請幫助並糾正我。

回答

0

正如錯誤消息所述,如果您創建一個新對象,則不應設置該ID。

public static void main(String[] args){ 
     UserBean user = new UserBean(); 
     user.setUserName("name1"); 
     user.setPassword("passwd1"); 
     em.persist(user); 
    } 

如果你想改變一個對象,它已經持續存在,你必須從數據庫中第一次讀到它,然後改變其屬性的更新對象

+0

但創建實體的新對象時, ,它不會在數據庫中有任何記錄,但我們仍然可以調用該對象。那麼它怎麼可能是一個更新?如果id不同,那麼對象會被認爲是不同的,爲什麼不把它作爲新記錄保存,如果在ID中沒有衝突? –

+1

@MilindVinkar它是一個更新,因爲對象已經有一個id – Jens

相關問題