0

我尝试优化我的 GAE。这是我的模型:

游戏:id、状态、玩家...和列表;
Round : id , name, desc ... ;

我在游戏和回合之间建立了关系: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 回答