在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()回滚(); } }
答案 0 :(得分:0)
实际抛出的异常在哪里?你确定commit()和isActive()的语义吗? commit()可以自动创建一个新事务,使事务始终处于活动状态。
我的另一个猜测是,这是一个并发访问的单例bean,它们都会在同一个事务中与其他查询同时修改你请求的对象。