Загрузка коллекции перечислений в хранилище данных Google app engine

StackOverflow https://stackoverflow.com/questions/1500643

  •  19-09-2019
  •  | 
  •  

Вопрос

Я использую хранилище данных Goole app engine с Java и пытаюсь загрузить объект со списком перечислений.Каждый раз, когда я загружаю объект, список имеет значение null.Объект является

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class ObjectToSave {

    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;

    @Persistent
    private List<AnEnum> anEnumList;

    //public getters and setters
}

Перечисление простое

public enum AnEnum {
    VALUE_1,
    VALUE_2;
}

Код для его сохранения таков

ObjectToSave objectToSave = new ObjectToSave();
List<AnEnum> anEnumList = new ArrayList<AnEnum>();
anEnumList.add(AnEnum.VALUE_1);
objectToSave.setAnEnumList(anEnumList);
PersistenceManager pm = pmfInstance.getPersistenceManager();
try {
    pm.makePersistent(objectToSave);
} finally {
    pm.close();
}

Код для его загрузки таков

PersistenceManager pm = pmfInstance.getPersistenceManager();
try {
    Key key = KeyFactory.createKey(ObjectToSave.class.getSimpleName(), id);
    ObjectToSave objectToSave = pm.getObjectById(ObjectToSave.class, key);
} finally {
    pm.close();
}

Я могу просмотреть данные в хранилище данных, используя http://localhost:8080/_ah/admin и могу видеть, что мой список был сохранен, но его там нет, когда объект загружен.

Я создал свой проект с помощью плагина Eclipse и, насколько мне известно, не вносил никаких изменений в настройки хранилища данных.Так почему же мой список перечислений имеет значение null?

Это было полезно?

Решение

Да, но ваше поле списка не входит в группу выборки по умолчанию при загрузке, поэтому, следовательно, не загружается.Читать Группы выборки JDO.Вы можете добавить его в DFG, или включить пользовательскую группу выборки, или просто "коснуться" поля перед закрытием PM.

--Энди (Ядро данных)

Другие советы

Как вы создаете экземпляр ObjectToSave?Значение по умолчанию для всех ссылочных типов переменных экземпляра равно null, поэтому, если у вас нет (дополнительного) кода для создания экземпляра List<AnEnum> и назначьте его anEnumList, ожидалось бы значение null.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top