我正在使用JDO on app engine。出于某种原因,getObjectById
的方法PersistenceManager
会返回:
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
的对象。为什么会抛出这个异常?
答案 0 :(得分:2)
您需要指定要检索的对象的类。
因此,该方法的典型签名应该是:
getObjectById(Class arg0, Object arg1);
其中arg0是您要检索的类,即Image.class
,而arg1是键值对象。