【发布时间】:2012-02-20 16:30:18
【问题描述】:
我收到以下错误:
javax.jdo.JDODetachedFieldAccessException:您刚刚尝试访问字段“admin”,但在您分离对象时该字段未分离。要么不要访问该字段,要么在分离对象时将其分离。
这里我有一个 Store 对象列表,其中包含一个 Admin 字段作为子类。
我先调用这个函数
static List<Store> getStores() {
PersistenceManager pm = PMF.get().getPersistenceManager();
Query query = pm.newQuery(XZStore.class);
List<Store> stores = (List<Store>) query.execute();
//need to detatch them here
stores = (List<Store>) pm.detachCopyAll(stores);
pm.close();
return stores;
}
然后访问每个商店的管理字段 (store.admin)。
我想如果我 detachCopyAll(stores) 那么我也会分离 商店的元素。不是吗?
我什至尝试了以下但没有运气:
for (Store store : stores)
store.setAdmin(pm.detachCopy(store.getAdmin()));
谢谢,
约翰·戈奇
我终于找到了解决办法。以下对我有用 (分离容器元素并没有分离成员 元素,我必须分开做)。
PersistenceManager pm = PMF.get().getPersistenceManager();
Query query = pm.newQuery(Store.class);
List<Store> stores = (List<Store>) query.execute();
//need to detatch them here
List<Store> detachedStores = new ArrayList<Store>();
for (Store store : stores) {
Store detachedStore = pm.detachCopy(store);
AdminUser detachedAdmin = pm.detachCopy(store.getAdmin());
detachedStore.setAdmin(detachedAdmin);
detachedStores.add(detachedStore);
}
pm.close();
问候,
约翰·戈奇
【问题讨论】:
标签: google-app-engine jdo