Движок приложения JDO: исключение выдается при попытке сохранить член списка класса - PullRequest
0 голосов
/ 28 января 2012

Я запускаю следующий код JDO на сервере механизма приложений.

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

org.datanucleus.jdo.exceptions.ClassNotPersistenceCapableException: класс "Theкласс "java.util.ArrayList" не является персистентным. Это означает, что он либо не был улучшен, либо что улучшенная версия файла отсутствует в CLASSPATH (или скрыта не расширенной версией), либо в метаданных /аннотации для класса не найдены. "не является постояннымЭто означает, что он либо не был улучшен, либо что расширенная версия файла отсутствует в CLASSPATH (или скрыта не расширенной версией), либо метаданные для класса не найдены.

Вот мой класс:

@PersistenceCapable(detachable="true")
class Store {

  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  private Key key;

  @Persistent
  @Element(dependent = "true")
  private List<User> users;

  List<User> getUsers() {
    return users;
  }

}

Когда я запускаю

pm.makePersistent(store.getUsers());

, я получаю вышеуказанное исключение.Есть идеи, почему это происходит?Я подумал, что в документации сказано, что у меня может быть List <> в качестве постоянного элемента, и что он превратится в многозначное свойство.

Спасибо,

John Goche

1 Ответ

2 голосов
/ 01 февраля 2012

Я "угадаю", потому что этот метод берет объект, и вы передаете список.Если вы хотите сохранить список постоянных объектов List, я бы ожидал вызвать pm.makePersistentAll(), о чем говорят все документы JDO.

...