【发布时间】:2014-06-06 04:38:41
【问题描述】:
我正在使用JDO on app engine。出于某种原因,PersistenceManager 的方法 getObjectById 返回:
No such object
org.datanucleus.exceptions.NucleusObjectNotFoundException: No such object
代码:
public Image getById(long id) {
Image img = null;
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
img = (Image) pm.getObjectById(id);
}catch (Exception e){
e.printStackTrace();
}finally {
pm.close();
}
return img;
}
在此文件的其他部分,我可以使用 Query 成功检索所有实体:
public List<Image> getAll() {
PersistenceManager pm = PMF.get().getPersistenceManager();
List<Image> results = null;
Query q = pm.newQuery(Image.class);
q.setOrdering("date desc");
try {
results = (List<Image>) q.execute();
} finally {
q.closeAll();
}
return results;
}
调试:
显示/显而易见的是,数据存储包含请求的 id 的对象。为什么抛出这个异常?
【问题讨论】:
-
不,它清楚地表明数据存储有一个特定的“表”,其中有一列具有该 id long 值。既然你没有告诉它看它的“表”,它怎么知道在哪里看?查看答案
标签: java google-app-engine jdo