如果有人可以向我介绍如何关闭的教程或最佳做法,我将不胜感激
JDO连接。
每当我包含finally块时,都会不断出现javax.jdo.JDOUserException: Object Manager has been closed错误。
我的代码如下:

public static List<AgentEntity> findAgentEntityByString(String id) {
    List<AgentEntity> agententity = new ArrayList<AgentEntity>();
    if (id == null) {
      return null;
    }
    try {
        Query q = pm.newQuery("select id from " + AgentEntity.class.getName());
        agententity = (List<AgentEntity>) q.execute();
    } catch(Exception ex) {
        log.warning(ex.getMessage());
    }
        return agententity;
  }


问候

最佳答案

避免此延迟加载问题的一种可能解决方案是使用size()方法,强制PersistenceManager对象在关闭之前从数据存储区加载结果列表。

public static List<AgentEntity> findAgentEntityByString(String id) {
    List<AgentEntity> agententity = new ArrayList<AgentEntity>();
    if (id == null) {
      return null;
    }
    try {
        Query q = pm.newQuery("select id from " + AgentEntity.class.getName());
        agententity = (List<AgentEntity>) q.execute();
        agententity.size()  //Should populate the returned list
        return agententity;
    } finally {
      pm.close();
    }
  }


参考here

09-18 21:49