Je suis en train de créer une application simple GWT, GAE, JDO. Pour commencer, je tente de stocker une table de Cat Records. J'ai réussi à faire fonctionner le mécanisme RPC dans mon appel pour enregistrer les données (voir setCOTDCats() ci-dessous). L'appel RPC est réussi autant que je peux dire. Cependant, lorsque j'essaie de lire les valeurs en arrière (voir getCOTDCats() ci-dessous), cela semble aussi fonctionner, sauf qu'il renvoie un résultat vide.GAE JDO Vide Résultat de la requête
Clairement soit la sauvegarde n'a pas fonctionné, ou la lecture n'a pas fonctionné, mais je ne sais pas comment dire qui ne fonctionne pas.
Je suis un débutant GAE et JDO. Veuillez en tenir compte dans les réponses.
Merci
Non Snark S'il vous plaît
@Override
public Cat[] getCOTDCats()
{
final List<Cat> catList = new ArrayList<Cat>();
final PersistenceManager pm = getPersistenceManager();
try
{
final Query q = pm.newQuery(CatRecord.class);
q.setOrdering("COTDDate");
final List<CatRecord> catRecords = (List<CatRecord>) q.execute();
for (CatRecord catRecord: catRecords)
{
final Cat cat = catRecord.getCat();
catList.add(cat);
}
}
finally
{
pm.close();
}
final Cat[] result = catList.toArray(new Cat[0]);
return result;
}
/* (non-Javadoc)
* @see org.catadoptionteam.catserve.client.AnimalDataService#setCOTDCats(org.catadoptionteam.catserve.shared.Cat[])
*/
@Override
public void setCOTDCats(Cat[] cat)
{
final List<CatRecord> catList = new ArrayList<CatRecord>();
for (Cat c: cat)
{
final CatRecord catRecord = new CatRecord(c);
catList.add(catRecord);
}
final PersistenceManager pm = getPersistenceManager();
try
{
pm.makePersistentAll(catList);
}
finally
{
pm.close();
}
}
private static PersistenceManager getPersistenceManager()
{
final PersistenceManager result = Persister.getPersistenceManager();
return result;
}
public enum Persister
{
INSTANCE;
private static final PersistenceManagerFactory pmfInstance =
JDOHelper.getPersistenceManagerFactory("transactions-optional");
public static PersistenceManager getPersistenceManager()
{
final PersistenceManager result = pmfInstance.getPersistenceManager();
return result;
}
}
J'ai passé aujourd'hui à essayer différentes choses. Il semble que je récupère des données maintenant, mais c'est incorrect. J'ai supprimé certains de mes champs dans mon CatRecord PersistenceCapable. Je me demandais si un (ou plusieurs) de mes types de données ne sont pas valides à utiliser? J'utilise Key, String, Date, boolean, Text et une énumération que j'ai définie. – Mitch
La visionneuse local_db vous indique si la sauvegarde a fonctionné. Le journal vous dit aussi beaucoup de choses – DataNucleus
Cela semble fonctionner mieux maintenant. Je ne suis pas sûr de ce qui s'est mal passé. J'ai trouvé que la suppression des fichiers war/WEB-INF/appengine-generated/* semblait aider. Je ne sais pas si c'est une bonne idée. Je n'ai découvert cela que par essais et erreurs. – Mitch