Caricamento di una raccolta di enumerazioni con datastore di App Engine di Google
-
19-09-2019 - |
Domanda
Sto usando il datastore di App Engine Goole con Java e cercando di caricare un oggetto con un elenco di enumerazioni. Ogni volta che passo per caricare l'oggetto della lista è nullo. L'oggetto è
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class ObjectToSave {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private List<AnEnum> anEnumList;
//public getters and setters
}
L'enum è semplice
public enum AnEnum {
VALUE_1,
VALUE_2;
}
Il codice per salvarla è
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();
}
Il codice per caricarlo è
PersistenceManager pm = pmfInstance.getPersistenceManager();
try {
Key key = KeyFactory.createKey(ObjectToSave.class.getSimpleName(), id);
ObjectToSave objectToSave = pm.getObjectById(ObjectToSave.class, key);
} finally {
pm.close();
}
Posso visualizzare i dati del datastore usando http: // localhost: 8080 / _ah / admin e può vedere la mia lista è stato salvato ma non è lì quando l'oggetto viene caricato.
Ho creato il mio progetto con il plugin di Eclipse e non sono state apportate modifiche alle impostazioni datastore per quanto ne so. Allora, perché la mia lista id Enum nulla?
Soluzione
Si, pero 'il vostro campo elenco non è nel difetto recuperare gruppo a carico in modo quindi non viene caricato. Leggi JDO Fetch Gruppi . Si potrebbe aggiungere alla DFG, o attivare una consuetudine recuperare gruppo, o semplicemente "toccare" il campo prima di chiudere il PM.
- Andy ( DataNucleus )
Altri suggerimenti
Come si crea un'istanza di ObjectToSave? Il valore di default di tutti i tipi di riferimento variabile di istanza è nullo, quindi a meno che non si dispone di (ulteriore) il codice per creare un'istanza di List<AnEnum>
e assegnarlo a anEnumList
, null ci si aspetterebbe.