我尝试优化我的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。 我真的想通过不要求所有孩子(回合)来降低我的阅读成本
由于
答案 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