GAE JDO Пустой результат запроса - PullRequest
0 голосов
/ 03 сентября 2011

Я собираю простое приложение GWT, GAE, JDO.Для начала я пытаюсь сохранить таблицу записей о кошках.Мне удалось заставить механизм RPC работать в моем вызове для сохранения данных (см. SetCOTDCats () ниже).Насколько я могу судить, вызов RPC успешен.Тем не менее, когда я пытаюсь прочитать значения обратно (см. GetCOTDCats () ниже), это тоже, кажется, работает, за исключением того, что он возвращает пустой результат.

Ясно, что или сохранение не сработало, или чтение не сработало, но я не знаю, как определить, что не работает.

Я GAE и JDO Новичок.Пожалуйста, примите это во внимание при любых ответах.

Спасибо

Нет, Snark Пожалуйста

@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;
    }
}

1 Ответ

0 голосов
/ 03 сентября 2011

Возможно, проблема в том, как вы работаете с PersistenceManager Определите класс PMF.java следующим образом:

import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManagerFactory;

public final class PMF {
    private static final PersistenceManagerFactory pmfInstance = JDOHelper
            .getPersistenceManagerFactory("transactions-optional");

    private PMF() {
    }

    public static PersistenceManagerFactory get() {
        return pmfInstance;
    }
}

Затем, когда вы хотите получить доступ к PersistenceManager, вы должны позвонить:

PersistenceManager pm = PMF.get().getPersistenceManager();

Кроме того, все ваши модели (в вашем примере Cat) должны быть определены с JDO. Для получения подробной информации проверьте: http://code.google.com/appengine/docs/java/datastore/jdo/

Надеюсь, это поможет!

...