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);