问题是: ds.put(employee) 是否发生在事务中?或者外部事务是否被 saveRecord(..) 中的事务擦除/覆盖?
- 一旦在 for 循环中的某个点(假设 i==5)在 datastore.put(..) 行引发错误,之前源自同一行的 put 会回滚吗?
- saveRecord(..) 中发生的 put 怎么样?我想那些不会被回滚。
DatastoreService 数据存储 = DatastoreServiceFactory.getDatastoreService() 交易 txn = datastore.beginTransaction(); 尝试 { for (int i=0; 1<10; i++) { Key employeeKey = KeyFactory.createKey("Employee", "Joe"); 实体员工 = datastore.get(employeeKey); employee.setProperty("假期", 10); datastore.put(员工); 实体employeeRecord = createRecord("record",employeeKey); 保存记录(雇员记录); } txn.commit(); } 最后 { 如果 (txn.isActive()) { txn.rollback(); } } 公共无效保存记录(实体实体){ datastore.beginTransaction(); 尝试 { // 在这里做一些逻辑,删除活动并提交 txn datastore.put(实体); } 最后 { if (datastore.getCurrentTransaction().isActive()) { datastore.getCurrentTransaction().rollback(); } } }