Laden eine Sammlung von Aufzählungen mit Google App Engine-Datenspeicher
-
19-09-2019 - |
Frage
Ich bin mit dem App Engine Goole Datenspeicher mit Java und versuchen, ein Objekt mit einer Liste der Aufzählungen zu laden. Jedes Mal lade ich das Objekt der Liste null ist. Das Objekt ist
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class ObjectToSave {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private List<AnEnum> anEnumList;
//public getters and setters
}
Die Enumeration ist einfach
public enum AnEnum {
VALUE_1,
VALUE_2;
}
Der Code, es zu speichern ist
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();
}
Der Code zu laden ist
PersistenceManager pm = pmfInstance.getPersistenceManager();
try {
Key key = KeyFactory.createKey(ObjectToSave.class.getSimpleName(), id);
ObjectToSave objectToSave = pm.getObjectById(ObjectToSave.class, key);
} finally {
pm.close();
}
kann ich die Daten in den Datenspeicher betrachten http: // localhost: 8080 / _ah / admin und kann meine Liste gespeichert wurde, aber es ist nicht da, wenn das Objekt geladen wird.
siehehabe ich mein Projekt mit der Eclipse-Plugin und habe keine Änderungen an den Datenspeicher-Einstellungen vorgenommen, soweit ich weiß. Warum also id meine Enum Liste null?
Lösung
Ja, aber Ihr Listenfeld ist in dem Standard nicht Gruppe beim Laden holen, so wird daher nicht geladen. Lesen Sie JDO Gruppen holen. Man konnte es an die DFG hinzufügen oder ermöglichen eine benutzerdefinierte Gruppe holen, oder einfach nur „berühren“ das Feld vor dem PM schließen.
- Andy ( Datanucleus )
Andere Tipps
Wie erstellen Sie eine Instanz von ObjectToSave? Der Standardwert aller Instanzvariablen Referenztypen null ist, so sei denn, Sie haben (zusätzlich) Code eine Instanz von List<AnEnum>
zu erstellen und zuweisen, um anEnumList
, null zu erwarten wäre.