2012-06-29 101 views
0

我有以下方法:關閉的EntityManager org.datanucleus.exceptions.NucleusUserException

public List<Profile> listProfiles(){ 
    EntityManager em = EMF.get().createEntityManager(); 
    List<Profile> list = null; 
    try{ 

     Query q = em.createQuery("SELECT p FROM Profile p"); 
     list = (List<Profile>)q.getResultList(); 

    } catch(NoResultException ex){ 
     System.out.println("ERROR CATCHED: " + ex.getMessage()); 
    } finally{ 
     em.close(); 
    } 

    return list; 
} 

訪問返回列表將拋出一個錯誤: org.datanucleus.exceptions.NucleusUserException: Object Manager has been closed

一招,我發現是添加則爲list.size ()在關閉實體經理之前:

finally{ 
    list.size(); 
    em.close(); 
} 

我應該關閉實體經理嗎?還是有我錯過的概念?其他

+0

是使用''前'em.close則爲list.size()()'好嗎? –

回答

0

一個「概念」是使用GAE JPA插件V2。它現在已經很久以前發佈了。

+0

它仍處於實驗階段嗎? –

+0

謝謝。我是用短語'的DataNucleus將插件的2.0版本混淆是https://developers.google.com/appengine/docs/java/datastore/jpa/overview-dn2 –

+0

的experimental'這是從來沒有「實驗」(除在某些Google文檔作者的腦海中),因爲穩定性一直是其發展的第一天。它通過了(在發佈時),並且仍然通過了比Google Googles v1插件更多的測試,就像這個網站上無數次所說的那樣 – DataNucleus

相關問題