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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top