J'utilise le moteur d'application Goole datastore avec Java et en essayant de charger un objet avec une liste des énumérations. Chaque fois que je charge l'objet, la liste est nulle. L'objet estune collection de Enums avec le moteur Google app datastore
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class ObjectToSave {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private List<AnEnum> anEnumList;
//public getters and setters
}
ENUM est simple
public enum AnEnum {
VALUE_1,
VALUE_2;
}
Le code pour l'enregistrer est
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();
}
Le code pour le charger est
PersistenceManager pm = pmfInstance.getPersistenceManager();
try {
Key key = KeyFactory.createKey(ObjectToSave.class.getSimpleName(), id);
ObjectToSave objectToSave = pm.getObjectById(ObjectToSave.class, key);
} finally {
pm.close();
}
je peux voir les données dans le magasin de données en utilisant http://localhost:8080/_ah/admin et peut voir ma liste a été enregistrée, mais il n'est pas là lorsque l'objet est chargé.
J'ai créé mon projet avec le plugin Eclipse et je n'ai pas modifié les paramètres du magasin de données pour autant que je sache. Alors pourquoi id ma liste Enum null?
Pouvez-vous montrer le code où vous attribuez la liste à anEnumList? – Yishai
Les autres champs de l'objet sont-ils correctement enregistrés? –
J'ai mis à jour la question pour montrer la création de la liste enum. D'autres valeurs que je n'ai pas ajoutées ici sont en cours d'enregistrement et la clé primaire est en cours de définition. – Chris