org.datanucleus.exceptions.NucleusUserException: диспетчер объектов был закрыт - PullRequest
1 голос
/ 29 января 2012

Я получаю следующее сообщение об ошибке:

org.datanucleus.exceptions.NucleusUserException: Диспетчер объектов был закрыт

Я прочитал все, что мог найти на нем, но я все ещене понимаю, что вызывает это.Я собираюсь сдаться и переключиться на базу данных SQL, если я не могу решить эту простую проблему.Да, я закрываю вечера:

static void persistAll (Object [] objs) {

PersistenceManager pm = PMF.get().getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
  tx.begin();
  for (Object o : objs)
    pm.makePersistent(o);
  //pm.makePersistentAll(objs);
  tx.commit();
} finally {
  if (tx.isActive())
    tx.rollback();
  pm.close();
}

}

Я сделал свои вещи отрывными, и у меня естьотделил мои объекты, где я думал, что должен.Что я могу сделать сейчас???Я полностью застрял на этом !!!DataNucleus, пожалуйста, помогите !!!

JG

Я попытался добавить поля Store List <> в группу выборок по умолчанию, и я получаю следующие предупреждения об ошибках от Jetty при отладке моего приложения.Я собираюсь попытаться «прикоснуться» к полям вместо этого, когда я получу материал.(?)

Jan 29, 2012 1:29:30 PM org.datanucleus.store.appengine.MetaDataValidator warn
WARNING: Meta-data warning for com.foobar.foo.Store.sales: The datastore does not support joins and therefore cannot honor requests to place related objects in the default fetch group.  The field will be fetched lazily on first access.  You can modify this warning by setting the datanucleus.appengine.ignorableMetaDataBehavior property in your config.  A value of NONE will silence the warning.  A value of ERROR will turn the warning into an exception.
Jan 29, 2012 1:29:30 PM org.datanucleus.store.appengine.MetaDataValidator warn
WARNING: Meta-data warning for com.foobar.foo.Store.shipments: The datastore does not support joins and therefore cannot honor requests to place related objects in the default fetch group.  The field will be fetched lazily on first access.  You can modify this warning by setting the datanucleus.appengine.ignorableMetaDataBehavior property in your config.  A value of NONE will silence the warning.  A value of ERROR will turn the warning into an exception.
Jan 29, 2012 1:29:30 PM org.datanucleus.store.appengine.MetaDataValidator warn
WARNING: Meta-data warning for com.foobar.foo.Store.users: The datastore does not support joins and therefore cannot honor requests to place related objects in the default fetch group.  The field will be fetched lazily on first access.  You can modify this warning by setting the datanucleus.appengine.ignorableMetaDataBehavior property in your config.  A value of NONE will silence the warning.  A value of ERROR will turn the warning into an exception.

Я получаю NullPointerException от pm.makePersistent(store), хотя я проверил с помощью отладчика, что хранилище не равно нулю (но, поскольку группа извлечения по умолчанию не работает, она можетможет быть, некоторые из этих подполей были как-то равны нулю (?)

1 Ответ

5 голосов
/ 29 января 2012

Я подозреваю, что ваша проблема связана с попыткой получить доступ к значению поля, которое загружается лениво.Если вы сделаете это после закрытия PersistenceManager, это будет ошибкой.Например, отложенная загрузка является значением по умолчанию для дочерних объектов в отношениях, принадлежащих JDO.Удостоверьтесь, что вы извлекаете или просматриваете («дотрагиваетесь») такой контент, прежде чем закрывать личный кабинет и отсоединять объект.Имея собственное отношение «один к одному», вы также можете добавить дочернее поле в «группу выборки по умолчанию», чтобы оно извлекалось и загружалось вместе с родителем.

Здесь обсуждается более подробно: http://code.google.com/appengine/docs/java/datastore/jdo/relationships.html#Owned_One_to_One_Relationships

...