0

GAE を最適化しようとしています。これは私のモデルです:

Game : id 、 status 、players ... および List ;
Round : id 、 name 、 desc ... ;

Game と Round の関係を取得しました: 1-N

問題は、彼のオールラウンドまたは特定のフィールドがないとゲームをリクエストできないことです。

私はすでにこれを試しました:

Query query = pm.newQuery(Game.class);
ArrayList<Game> allgame = new ArrayList<Game>();
query.setResult("id, status");
allgame.addAll((Collection<? extends Game>) query.execute());

Query query = pm.newQuery("SELECT id, status FROM com.ws.model.Game");
ArrayList<Object> allgame = new ArrayList<Object>();
allgame.addAll((Collection<? extends Object>) query.execute());

PersistenceManagerFactory と JDO v1 を使用しています。すべての子をリクエストしないことで読み取りコストを削減したい (ラウンド)

ありがとう

4

1 に答える 1

0

オブジェクトが JDO によってデータストアから取得される場合、呼び出されたフェッチ グループのみ が取得されます。TextBlobなどのインデックスのないプロパティは、既定では取得されません。これは、シリアル化されたフィールド値 (Round オブジェクトとして) がデフォルトで取得されないことを意味します。これは遅延読み込みと呼ばれます。*

特定のフィールドのみを取得するには、次のようなクエリを使用できます。

        query = pm.newQuery("SELECT status, players FROM " +
                Game.class.getName() + " WHERE xy == :xy);

この場合、取得するフィールドにはインデックスを付ける必要があることに注意してください。

お役に立てれば。

*REF: Google App Engine Java および GWT アプリケーション開発

于 2013-06-28T15:14:51.850 に答える