如果有人可以向我介绍如何关闭的教程或最佳做法,我将不胜感激
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。