Carregando uma coleção de enumerações com Google armazenamento de dados do App Engine

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

  •  19-09-2019
  •  | 
  •  

Pergunta

Eu estou usando o armazenamento de dados do App Engine Goole com Java e tentar carregar um objeto com uma lista de Enums. Toda vez que eu carregar o objeto da lista é nulo. O objeto é

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

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

    @Persistent
    private List<AnEnum> anEnumList;

    //public getters and setters
}

A enumeração é simples

public enum AnEnum {
    VALUE_1,
    VALUE_2;
}

O código para salvá-lo é

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();
}

O código para carregar é

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

Eu posso ver os dados no armazenamento de dados usando http: // localhost: 8080 / _ah / admin e pode ver a minha lista foi salva, mas ele não está lá quando o objeto é carregado.

Eu criei o meu projecto com o Eclipse plug-in e não tiver feito alterações nas configurações de armazenamento de dados, tanto quanto eu sei. Então, por id meu Enum lista nulo?

Foi útil?

Solução

Sim, mas seu campo de lista não está no padrão grupo buscar a carregar assim que, portanto, não é carregado. Leia JDO Fetch Grupos . Você pode adicioná-lo à DFG, ou ativar um costume buscar grupo, ou apenas "tocar" o campo antes de fechar a PM.

- Andy ( DataNucleus )

Outras dicas

Como você está criando uma instância de ObjectToSave? O valor padrão de todos os tipos de referência variável de instância é nulo, a menos que você tem o código (adicional) para criar uma instância de List<AnEnum> e atribuí-la a anEnumList, null seria esperado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top