8

次のエンティティがあります(関連性のないフィールド/メソッドは削除されています)。

public class HitsStatsTotalDO
{
    @Id
    transient private Long targetId;

    public Key<HitsStatsTotalDO> createKey()
    {
        return new Key<HitsStatsTotalDO>(HitsStatsTotalDO.class, targetId);
    }
}

だから...私はを使用してキーを構築する10個のオブジェクトに対してバッチ取得を実行しようとしていますHitsStatsTotalDO.createKey()。私は次のようなトランザクションでそれらをフェッチしようとしています:

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

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

次の例外をスローします:

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

数が多すぎることと、それを修正する方法を詳しく説明していただけますか?ドキュメントで正確な番号を見つけることができませんでした。

ありがとう!

4

2 に答える 2

5

問題は、取得するエンティティの数ではなく、複数のエンティティグループに含まれているという事実です。トランザクションの外部でフェッチを実行するか、XG(クロスグループ)トランザクションを使用します。

于 2011-11-24T03:25:14.200 に答える
1

1つのトランザクションで、同じエンティティグループ内のエンティティを操作できます。

トランザクションでできること

于 2011-11-24T03:09:34.603 に答える