我正在关注Udacity开发可扩展的Java应用程序教程,我正在尝试通过多个属性创建查询,但它不起作用。
这是Api方法:
@ApiMethod(name = "filterPlayground",path = "filterPlayground",httpMethod = HttpMethod.POST)
public List<Conference> filterPlayground()
{
Query<Conference>query = ofy().load().type(Conference.class).order("name");
query.filter("city = ","London");
query.filter("topics =", "Medical Innovations");
query.filter("month = ", 6);
return query.list();
}
以下是会议模型中的字段:
private static final String DEFAULT_CITY = "Default City";
@Index private List<String> topics;
@Index(IfNotDefault.class) private String city = DEFAULT_CITY;
@Index private int month;
它只显示所有会议。我不明白为什么这不起作用。顺便说一句,当我部署到localhost时,datastore-indexes-auto.xml始终为空。
我希望有人可以帮助我。 的问候,
答案 0 :(得分:2)
我也在研究相同的课程,并且在这一点上也很努力。无论我做什么,都没有创建datastore-indexes-auto.xml!
我的解决方法如下:
1)在以下文件夹中创建文件datastore-indexes.xml文件:/ conference / src / main / webapp / WEB-INF /:
<?xml version="1.0" encoding="UTF-8"?>
<datastore-indexes
autoGenerate="true">
<datastore-index kind="Conference" ancestor="false">
<property name="city" direction="asc" />
<property name="topics" direction="asc" />
<property name="month" direction="asc" />
<property name="name" direction="asc" />
</datastore-index>
</datastore-indexes>
(但是,autoGenerate =“true”似乎没有效果)
2)部署到appsot
这样您上面发布的查询就适合我。我同意 - 课程制定的GAE版本似乎有些不同,因为我遇到了几个问题(即我似乎没有本地数据存储区,但每个localhost执行都访问我的appspot数据存储区..)
答案 1 :(得分:1)
一些事情:
datastore-indexes-auto.xml
为空,因为在您的情况下不需要复合索引。