2014-01-28 54 views
1

我正在使用以下代碼將實體添加到數據存儲。但是,我收到了一個我無法解決的異常。任何見解?使用EntityManager添加到數據存儲將拋出異常

EntityManager em = EMFService.get().createEntityManager(); 
MyEntity temp = new MyEntity (param1, numOptions, option1, option2, option3); 
em.persist(temp); 
em.close(); 

我得到下面的異常在em.close()行以上代碼:

javax.persistence.PersistenceException: Cannot make object transient since object is new and not yet committed 
    at org.datanucleus.api.jpa.NucleusJPAHelper.getJPAExceptionForNucleusException(NucleusJPAHelper.java:302) 
    at org.datanucleus.api.jpa.JPAEntityManager.close(JPAEntityManager.java:197) 
    at com.vikrams.examquestweb.dao.Dao.addQuestion(Dao.java:34) 

這很奇怪,當搜索在谷歌的異常說明「Cannot make object transient since object is new and not yet committed」沒有給出匹配的結果。我是第一個得到這個的人嗎?也許我在某個地方犯了一些非常愚蠢的錯誤。請幫忙。

回答

1

首先您還需要打開一個事務來保存任何實體。 基本的代碼要做到這一點是這樣的:

em.getTransaction().begin();  
em.persist(temp); 
em.close(); 
em.getTransaction().commit(); 
em.close(); 

那麼你也應該張貼howr你看起來實體以及它是如何映射。

+0

就是這樣。謝謝 :) –

相關問題