Carga de una colección de enumeraciones con Google almacén de datos de App Engine
-
19-09-2019 - |
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?
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.