我正在製作一個簡單的GWT,GAE,JDO應用程序。首先,我試圖存儲Cat Records的表格。我設法讓我的調用中使用RPC機制來保存數據(請參閱下面的setCOTDCats())。據我所知,RPC調用是成功的。但是,當我嘗試讀取值(請參閱下面的getCOTDCats())時,它似乎也能工作,只是它返回空結果。GAE JDO空查詢結果
顯然無論保存沒有工作,或讀取沒有,但我不知道如何判斷哪些不起作用。
我是GAE和JDO Newbie。請對此進行迴應。
感謝
沒有蛇鯊請
@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;
}
}
今天我花了不同的嘗試。我似乎現在正在獲取數據,但這是不正確的。我刪除了我的PersistenceCapable CatRecord中的一些字段。我想知道是否有一個(或更多)我的數據類型無法使用?我使用Key,String,Date,boolean,Text和我定義的枚舉。 – Mitch
local_db查看器告訴你保存是否有效。日誌還會告訴你很多東西 – DataNucleus
現在看來它工作得更好了。我不確定哪裏出了問題。我發現刪除war/WEB-INF/appengine-generated/*文件似乎有所幫助。我不知道這是不是一個好主意。我只通過試驗和錯誤發現了這一點。 – Mitch