我正在制作一个简单的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