1

Objectify と RequestFactory で App Engine (Java) を使用しています。

私のエンティティには、いくつかのフィールドと埋め込みエンティティ ArrayList が格納されています。埋め込みエンティティには、独自のフィールドがいくつかあります。したがって、エンティティの例は次のようになります。

name: Bob
email: bob@example.com
todo.description: ["Pick up food", "Wash car", "Exercise"]
todo.importance: [1, 5, 3]

埋め込まれたエンティティ リストを取得して表示する DataGrid があります。ボタンをクリックすると、新しいアイテムが埋め込みエンティティに追加され、エンティティが保持され、データ グリッドが更新されます。

問題は、一貫性が高くないことです。ほとんどの場合、DataGrid は最新のデータで正常に更新されますが、古いデータが表示されるだけで、ページを更新して新しい結果を表示する必要がある場合があります。

App Engine は、同じエンティティ グループに属していないエンティティに関してのみ結果的に一貫性があることを理解していますが、私が理解している限り、埋め込まれたエンティティは、それを含むエンティティのフィールドが増えるだけです。つまり、1 つしかありません。エンティティが関与しており、すべてが高度に一貫している必要があります。

私はこれについて間違っていますか?

4

2 に答える 2

2

http://code.google.com/p/googleappengine/issues/detail?id=6326

それは私が作成した問題のスレッドです。まず、STRONG 一貫性をオンにしていることを確認します (最終的にはデフォルトだと思います)。

2番目-そのスレッドから、ここに重要な注意事項があります:

強い整合性フラグは、キーによる取得またはエンティティ グループ クエリの場合、これらの制約との強い整合性が得られることを意味しますが、「グローバル」(エンティティ ルートのない) クエリは依然として最終的に一貫性があります。フラグをEVENTUAL整合性に設定すると、 すべてのクエリが最終的に整合性のある動作を示します。

したがって、クロスエンティティクエリを実行している場合、STRONG をデフォルトに設定したかどうかに関係なく、EVENTUAL 一貫性がある可能性があります。したがって、STRONG 一貫性をオンにしてから、クロスエンティティである単一のクエリではなく、ビューをレンダリングするために必要なすべてのエンティティに対してキーによる単一の get クエリを実行してみてください。

于 2012-07-31T18:58:22.230 に答える
1

祖先クエリを発行することもでき、クエリは強力に一貫性があります

于 2012-08-01T04:18:37.800 に答える