【问题标题】:GAE Datastore Composite Filter errorGAE 数据存储复合过滤器错误
【发布时间】:2014-08-06 04:00:54
【问题描述】:

当我这样设置数据存储过滤器时实际发生了什么?

Query("Product").setFilter(filter1).setFilter(filter2);

我发现结果既不是AND也不是OR

我也尝试使用 CompositeFilterOperator.and,但我得到了 DatastoreNeedIndexException,它应该返回与 AND 复合过滤器匹配的内容。

【问题讨论】:

  • 我的 filter1 在字符串上,而 filter2 在 int 上
  • DatastoreNeedIndexException 表示您缺少执行查询的索引。将其添加到您的 datastore-indexes.xml 中,这应该可以解决错误。此外,如果我没记错的话,您的第二个 setFilter 将覆盖第一个,因此您将只搜索第二个过滤器。
  • 我以为数据存储中的所有条目都会自动编制索引?所以我需要创建与我的查询匹配的索引?我想你是对的。第二个过滤器将覆盖第一个过滤器。

标签: java google-cloud-datastore


【解决方案1】:

应用引擎为实体的每个属性预定义了一个简单的索引。应用引擎可以在名为datastore-indexes.xml 的索引配置文件中定义更多自定义索引,该文件在应用程序的/war/WEB-INF/appengine-generated 目录中生成。

你可以看看这个博客:

http://rlabs.wordpress.com/2009/04/01/fixing-appengine-error-no-matching-index-found-this-query-needs-this-index/

【讨论】:

    猜你喜欢
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多