2

ドキュメントから、どの先祖がトランザクションの境界であるかは明確ではありません。最も近いもの、またはルートのもの?

ルート エンティティ (A) があり、いくつかの子孫 (B1、B2 ... Bn) があり、それらは多くの祖先 (C1、C2 ...) を持つことができます。B エンティティに基づく祖先クエリで取得する C エンティティ (Cs) でトランザクションを作成します。質問は、ConcurrentModificationException別のトランザクションが B2 の下のいくつかの C を同時に変更した場合、B1 の下の C の変更は をスローしますか?

すべての C は、祖父母 A の下の同じエンティティ グループに属していますか、それともエンティティ グループも、より小さな「サブエンティティ グループ」に分割されていますか。つまり、B の下の C のすべてのグループは、独自のエンティティ グループを持っていますか?

4

1 に答える 1

1

境界はルートです。

https://developers.google.com/appengine/docs/python/datastore/transactionsから:

トランザクション内のすべての Datastore 操作は、同じエンティティ グループ内のエンティティに対して操作する必要があります

各ルート エンティティは個別のエンティティ グループに属しているため、1 つのトランザクションで複数のルート エンティティを作成または操作することはできません。

したがって、A の下のすべてが 1 つのエンティティ グループです。

于 2013-05-09T16:10:41.047 に答える