Google Appengine Datastore过滤器和排序方向在一起

时间:2016-12-11 17:55:39

标签: google-app-engine google-cloud-datastore

我正在尝试在数据存储区中使用以下SQL查询

     Select *from users where catagory="A" ODER BY id.

我尝试了以下代码

         DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
  Filter filter=new FilterPredicate("catagory", FilterOperator.EQUAL, "A");


      Query q = new Query("users");  
      q.setFilter(filter);
      q.addSort("id", SortDirection.DESCENDING);

setfilter()addsort()功能无法协同工作。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

来自Class DatastoreNeedIndexException

  没有匹配的索引时抛出

DatastoreNeedIndexException   找到需要索引的查询。检查中的索引页面   管理控制台和您的datastore-indexes.xml文件。

在许多情况下,开发服务器会在您的应用需要时自动创建必要的索引。见Creating indexes using the development server

但在某些情况下,不会发生自动索引更新。在这种情况下,您需要手动创建/更新索引。请参阅Creating indexes manually

当部署应用程序代码时,更新GAE上的索引也会在大多数情况下自动发生,但有时需要手动更新。来自Updating indexes

./appengine-java-sdk/bin/appcfg.sh update_indexes myapp/war

GAE索引更新后,可能需要一段时间才能进入serving状态。在达到该状态之前,可以看到相同的错误。检查开发人员控制台中的status of the app's indexes。在Updating indexes中也提到过。