2012-06-29 69 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

相关问题