Pregunta

Estoy utilizando el almacén de datos de App Engine Goole con Java y tratando de cargar un objeto con una lista de enumeraciones. Cada vez que se carga el objeto de la lista es nula. El objeto es

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

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

    @Persistent
    private List<AnEnum> anEnumList;

    //public getters and setters
}

La enumeración es simple

public enum AnEnum {
    VALUE_1,
    VALUE_2;
}

El código para guardar es

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

El código para cargar es

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

Puedo ver los datos en el almacén de datos utilizando http: // localhost: 8080 / _ah / admin y se puede ver a mi lista se ha guardado, pero no está allí cuando se carga el objeto.

He creado mi proyecto con el plug-in de Eclipse y no he hecho ningún cambio en la configuración del almacén de datos por lo que yo sé. Entonces, ¿por Identificación mi lista Enum nula?

¿Fue útil?

Solución

Sí, pero su campo de lista no está en el valor por defecto traiga grupo en la carga de manera por lo tanto no se carga. Leer JDO Fetch Grupos . Se podría añadir a la DFG, o habilitar un grupo personalizado traiga, o simplemente "toque" el campo antes de cerrar la PM.

- Andy ( DataNucleus )

Otros consejos

¿Cómo se crea una instancia de ObjectToSave? El valor por defecto de todos los tipos de referencia variable de instancia es nula, por lo menos que tenga código (adicional) para crear una instancia de List<AnEnum> y asignarlo a anEnumList, se esperaría nula.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top