Exceção: os conjuntos de resultados da consulta não são modificáveis
Estou tentando gravar em uma loja JDO usando este código:
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();
}
Infelizmente, recebo uma exceção "Os conjuntos de resultados da consulta não são modificáveis".
Tenho certeza de que vem da primeira consulta com a iteração, porque a segunda só funcionará.
Alguma idéia do que eu preciso alterar para tornar o resultado da consulta modificável?