Я получаю следующую ошибку:
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()));
Спасибо
Джон Гош
Я наконец нашел решение. Следующее сработало для меня
(отсоединение элемента контейнера не отсоединяет элемент
элемент, и я должен был сделать это отдельно).
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();
С уважением,
Джон Гош