数据存储区谷歌应用程序引擎查询特定字段和没有孩子

时间:2013-06-28 14:48:35

标签: java google-app-engine datastore

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

  

游戏:id,status,players ...和List;
回合: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。 我真的想通过不要求所有孩子(回合)来降低我的阅读成本

由于

1 个答案:

答案 0 :(得分:0)

当JDO从数据存储中检索对象时,仅检索被叫 获取组 。默认情况下不会检索未编制索引的属性,包括文本 Blob 。这意味着默认情况下不会检索序列化字段值(作为Round对象)。 这称为延迟加载。*

要获得某些特定信息,您可以使用以下查询:

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

请记住,在这种情况下,您检索的字段必须编入索引。

希望这有帮助。

* REF:Google App Engine Java and GWT Application Development