как повторить / восстановить из исключения java.sql.SQL: одновременная модификация - PullRequest
3 голосов
/ 03 февраля 2010

Используя JDO в GAE, я использую простой блок кода транзакции базы данных, как показано ниже.

Каков хороший способ повторить попытку / восстановиться после сброса java.sql.SQLException: Concurrent Modification?

приватный финальный провайдер pmp; ...

PersistenceManager pm = pmp.get (); пытаться { pm.currentTransaction () начинается ();.

MyObject myObject = pm.getObjectById (MyObject.class, id);

pm.currentTransaction () фиксации ();.

} наконец {

if (pm.currentTransaction (). IsActive ()) { log.severe (this.getClass (). getName () + "поймано исключение DATABASE."); pm.currentTransaction () откат (). } }

1 Ответ

0 голосов
/ 03 февраля 2010

Где на самом деле выброшено это исключение? Вы уверены в семантике commit () и isActive ()? commit () может автоматически создать новую транзакцию, оставляя транзакцию всегда активной.

Мое другое предположение могло бы состоять в том, что к этому одноэлементному бину обращаются одновременно, и все они заканчиваются одной транзакцией с другими запросами, одновременно изменяющими ваш запрошенный объект.

...