如何从java.sql.SQLexception重试/恢复:并发修改

时间:2010-02-02 21:18:03

标签: java google-app-engine jdo google-cloud-datastore

在GAE上使用JDO,我使用的是一个简单的数据库事务代码块,如下所示。

从抛出的java.sql.SQLException重试/恢复的好方法是什么:并发修改?

私人最终提供者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()+“catch DATABASE exception。”);    pm.currentTransaction()回滚();   }  }

1 个答案:

答案 0 :(得分:0)

实际抛出的异常在哪里?你确定commit()和isActive()的语义吗? commit()可以自动创建一个新事务,使事务始终处于活动状态。

我的另一个猜测是,这是一个并发访问的单例bean,它们都会在同一个事务中与其他查询同时修改你请求的对象。