Google app engine “有多少个对象?”;“太多”;在与谷歌的单一交易中';s数据存储(高复制)?
我有以下实体(删除了不相关的字段/方法) 这将引发以下异常:Google app engine “有多少个对象?”;“太多”;在与谷歌的单一交易中';s数据存储(高复制)?,google-app-engine,transactions,google-cloud-datastore,objectify,Google App Engine,Transactions,Google Cloud Datastore,Objectify,我有以下实体(删除了不相关的字段/方法) 这将引发以下异常: java.lang.IllegalArgumentException:在一个事务中对太多实体组进行操作。 你能详细说明多少是太多,以及如何修复它吗?我在文件中找不到确切的数字 谢谢 在单个交易中,您可以操作同一实体组中的实体 问题不在于要检索的实体数量,而在于它们位于多个实体组中。要么在事务外部执行获取,要么使用。啊,是的,我使用的高复制是5。我还更新了您的答案。是的,我错过了关于5个实体的部分。至少在Python SDK 1.7.
java.lang.IllegalArgumentException:在一个事务中对太多实体组进行操作。
你能详细说明多少是太多,以及如何修复它吗?我在文件中找不到确切的数字
谢谢 在单个交易中,您可以操作同一实体组中的实体
问题不在于要检索的实体数量,而在于它们位于多个实体组中。要么在事务外部执行获取,要么使用。啊,是的,我使用的高复制是5。我还更新了您的答案。是的,我错过了关于5个实体的部分。至少在Python SDK 1.7.3中,BadRequestError有两条不同的错误消息:“需要显式指定跨组事务,请参阅TransactionOptions.Builder.withXG”和“在单个事务中操作过多的实体组”。您的答案解决了前者,但后者可能发生在XG事务中,如果它在5个以上的实体组上运行。对于XG事务,现在的限制似乎是25个实体组。看见
public class HitsStatsTotalDO
{
@Id
transient private Long targetId;
public Key<HitsStatsTotalDO> createKey()
{
return new Key<HitsStatsTotalDO>(HitsStatsTotalDO.class, targetId);
}
}
final List<Key<HitsStatsTotalDO>> keys = ....
// This is being called in transaction..
Map<Key<HitsStatsTotalDO>, HitsStatsTotalDO> result = DAOBase.ofy().get(keys);