问题是: 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();
}
}
}