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?

questionAnswers(2)

yourAnswerToTheQuestion