2010-04-01 2 views
1
  1. В этом примере исключение исключается, если какой-либо элемент таблицы изменяется другим клиентом или только если измененный элемент был изменен другим клиентом?
  2. Просто для проверки - исключение выбрасывается из commit(), не так ли?Исключения транзакции 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??? 
    } 
    

ответ

1

1.) Исключение будет сгенерировано только если , что лицо изменяется в другом месте во время операции.

2.) Правильно, исключение будет выбрано при совершении.

Вам также необходимо позвонить pm.makePersistent(Table.get(0)), чтобы он сохранил ваши изменения.

+0

круто спасибо Джейсону! – bach

Смежные вопросы