【发布时间】:2014-01-26 15:31:54
【问题描述】:
我正在尝试使用以下代码添加一个新的根实体:
try {
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Key eventKey = datastore.allocateIds("Event", 1).getStart();
String keyString = KeyFactory.keyToString(eventKey);
//TransactionOptions options = TransactionOptions.Builder.withXG(true);
Transaction txn = datastore.beginTransaction();
Entity eventEntity = new Entity("Event", keyString);
datastore.put(eventEntity);
txn.commit();
} catch (Exception e) {
log.log(Level.SEVERE, e.getMessage(), e);
throw new InternalServerErrorException(e);
}
这是一个简单的事务性数据存储插入,根据documents 假设可以工作 -
每个根实体都属于一个单独的实体组,因此单个事务不能创建或操作多个根实体,除非它是 XG 事务
我的“事件”实体没有任何祖先而且我只在事务中处理它。但由于某种原因,我得到以下异常:
java.lang.IllegalArgumentException: 跨组事务需要显式指定,参见 TransactionOptions.Builder.withXGfound 两个 Element { 类型:“事件” 编号:4 } 和元素{ 类型:“事件” 名称:“ahBldmVudHNmaW5kZXIyMDEzcgsLEgVFdmVudBgEDA” }
知道这里有什么问题吗?
【问题讨论】:
标签: java google-app-engine transactions