【发布时间】:2011-11-29 13:51:19
【问题描述】:
我正在关注此站点上的文档:http://code.google.com/intl/sv-SE/appengine/docs/java/datastore/jdo/queries.html
从那里我学会了如何进行查询,但我似乎只使用一个参数。以下是我成功的方法:
javax.jdo.Query q1 = pm.newQuery(Player.class);
q1.setFilter("isOpen == true");
List<Player> players = (List<Player>) q1.execute();
这会为我获取所有带有布尔 isOpen == true 的 Player 对象。我可以用 Long 做同样的事情,也可以。
问题出在:当这样组合两个条件时:
javax.jdo.Query q1 = pm.newQuery(Player.class);
q1.setFilter("isOpen == true && lastPing > 100");
List<Player> players = (List<Player>) q1.execute();
应用程序崩溃。这是我得到的错误:
servlet 未捕获的异常 com.google.appengine.api.datastore.DatastoreNeedIndexException:否 找到匹配索引。此查询的建议索引是: 数据存储索引种类=“玩家”祖先=“假”源=“手册” 属性名称="isOpen" 方向="asc" 属性名称="lastPing" direction="asc" 数据存储索引
那么,有人知道为什么会这样吗?非常感谢任何帮助。
【问题讨论】:
-
Errm,数据存储区需要先“lastPing”索引?
标签: java google-app-engine jdo