在Google的DataStore(High Replication)的单个交易中,有多少对象"太多"?

exp*_*ert 8 google-app-engine transactions objectify google-cloud-datastore

我有以下实体(不相关的字段/方法被删除).

public class HitsStatsTotalDO
{
    @Id
    transient private Long targetId;

    public Key<HitsStatsTotalDO> createKey()
    {
        return new Key<HitsStatsTotalDO>(HitsStatsTotalDO.class, targetId);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以...我正在尝试批量获取10个对象,我使用它来构造键HitsStatsTotalDO.createKey().我试图在事务中获取它们,如下所示:

final List<Key<HitsStatsTotalDO>> keys = ....

// This is being called in transaction..
Map<Key<HitsStatsTotalDO>, HitsStatsTotalDO> result = DAOBase.ofy().get(keys);
Run Code Online (Sandbox Code Playgroud)

抛出以下异常:

java.lang.IllegalArgumentException: operating on too many entity groups in a single transaction.

你能详细说明有多少太多以及如何解决它?我在文档中找不到确切的数字.

谢谢!

Nic*_*son 5

问题不在于您检索的实体数量,而是它们位于多个实体组中.要么在事务外部进行提取,要么使用XG(交叉组)事务.