我想寫使用此代碼JDO店:例外:查詢結果集是不可修改
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.currentTransaction().begin();
// deactivate all for current domain
Query q = pm.newQuery(CampaignStore.class, "domain == '" + domain +"'");
Collection result = (Collection) q.execute();
CampaignStore toBeEdited = null;
Iterator iter = result.iterator();
while (iter.hasNext()) {
toBeEdited = (CampaignStore) iter.next();
toBeEdited.setActive(false);
}
result.clear();
// set new one active
q = pm.newQuery(CampaignStore.class, "id == " + id);
result = (Collection) q.execute();
toBeEdited = (CampaignStore) result.iterator().next();
if (toBeEdited == null) {
LOG.log(Level.WARNING, "setActiveCampaign: Unable to find Campaign ID '"+ id +"'");
pm.currentTransaction().rollback();
return;
}
toBeEdited.setActive(true);
pm.currentTransaction().commit();
LOG.log(Level.INFO, "setActiveCampaign: Active Campaign ID is now '"+ id +"'");
}
catch (Exception e) {
pm.currentTransaction().rollback();
LOG.log(Level.WARNING, "setActiveCampaign: Exception: "+ e.getMessage());
} finally {
pm.close();
}
不幸的是,我得到一個「查詢結果集是不可修改的」異常。
我很確定它來自迭代的第一個查詢,導致第二個單獨的工作。
任何想法,我需要改變,使查詢結果可修改?
爲什麼不張貼堆棧跟蹤?這會告訴你異常來自哪裏。 – DataNucleus 2010-10-12 10:24:34
這不是整個消息:「com.example.myproject.idea.server.AdminServiceImpl setActiveCampaign:setActiveCampaign:Exception:查詢結果集不可修改」我想它沒有更多的細節,因爲我正在處理錯誤myselfe 。 – JochenJung 2010-10-12 10:37:00
我沒有要求錯誤信息,我說「堆棧跟蹤」。所有例外都有一個堆棧跟蹤。也許是「e.printStackTrace」。 – DataNucleus 2010-10-12 10:39:05