我收到以下错误:
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)。
我想如果我分离了CopyAll(商店)那么我也会分离成员 商店的元素。不是吗?
我甚至尝试过以下但没有运气:
for (Store store : stores)
store.setAdmin(pm.detachCopy(store.getAdmin()));
谢谢,
John Goche
我终于找到了解决方案。以下对我有用 (分离容器元件没有拆除该构件 元素和我必须分开做。)
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();
此致
John Goche
答案 0 :(得分:0)
我认为阅读JDO文档和JDO规范会让您受益更多,尤其是获取计划/组和默认提取组等部分。你的“解决方案”效率低下。