GAE交易例外

时间:2010-04-01 13:55:07

标签: java google-app-engine

  1. 在此示例中,如果任何表元素被另一个客户端更改,或者仅当我们更改的元素已被另一个客户端更改时,是抛出异常吗?
  2. 只是为了验证 - commit()引发了异常,不是吗?

    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 个答案:

答案 0 :(得分:1)

1。)只有在事务期间该实体在其他地方被修改时才会抛出异常。

2。)正确,提交时将抛出异常。

您还必须致电pm.makePersistent(Table.get(0))以保存更改。