2010-04-01 3 views
1
  1. Dans cet exemple, l'exception est-elle levée si l'un des éléments de table est modifié par un autre client ou uniquement si l'élément que nous avons modifié a été modifié par un autre client?
  2. Juste pour vérifier - l'exception est levée du commit() n'est ce pas?Exceptions de transaction GAE

    PersistenceManager pm = PMF.get().getPersistenceManager();  
    try { 
        pm.currentTransaction().begin(); 
        List<Row> Table = (List<Row>) pm.newQuery(query).execute(); 
        Table.get(0).setReserved(true); // <----- we change only this element 
        pm.currentTransaction().commit(); 
    } catch (JDOCanRetryException ex) { 
        pm.currentTransaction().rollback() // <----- if Table.get(1) was changed by another client do we get to this point??? 
    } 
    

Répondre

1

1.) Une exception ne sera levée si cette entité est modifiée ailleurs lors de la transaction.

2.) Correct, l'exception sera levée lors de la validation. Vous devrez également appeler le pm.makePersistent(Table.get(0)) pour enregistrer votre changement.

+0

cool merci Jason! – bach