【问题标题】:ofy() appengine Date search queryofy() appengine 日期搜索查询
【发布时间】:2015-04-30 16:13:43
【问题描述】:

我想搜索两个日期之间的员工列表,即。 2014 年 1 月 1 日至 2014 年 12 月 31 日,使用 GAE ofy(objectify) 作为分支。我该怎么做?

ulist=ofy().load().type(Employee.class).filter("branch", branch).filter("date >=", fromdate).filter("date <=", toDate).list();

有 2 个字段 -Branch 是自动生成的字段。 - 对于日期,我使用了 2 个 Datebox,fromDate 和 toDate,并使用这 2 个日期我必须在日期字段上进行查询。

在日期之间进行搜索时,上述查询无法正常工作且未给出结果。但是,如果在 from date 和 todate 中都输入了相同的日期,那么它就可以工作了。

我的逻辑是否有任何问题,或者我可以使用任何其他方法来找出在两个日期之间加入的分支机构的员工?

【问题讨论】:

  • 您的datastore-indexes.xml 中有索引configured 吗? “在一个属性上使用一个或多个不等式过滤器并在其他属性上使用一个或多个等式过滤器的查询”
  • 不,我没有在 datastore-indexes.xml 中配置任何东西。
  • 你能告诉我如何配置那个文件吗?
  • documentation 应该告诉你所有你需要知道的。
  • 我会将其发布为答案。如果它对您有帮助,请接受它,以便其他人可以从中受益。

标签: java google-app-engine gwt


【解决方案1】:

您需要指定一个自定义索引来支持此查询,因为它结合了不同属性的多个过滤器。

根据documentation

其他形式的查询需要在索引配置文件中指定其索引,包括:

...

在一个属性上使用一个或多个不等式过滤器并在其他属性上使用一个或多个等式过滤器的查询

...

您的查询有一个相等过滤器(branch)和两个不等式过滤器(date)。

documentation 告诉您有关配置自定义索引的所有信息。

【讨论】:

  • 我已经像上面显示的那样配置了我的索引,它对我有用。
  • 在我的另一个查询中。我使用了状态 IN 运算符和一个不等式过滤器,即。 date
  • 对于这些我已经配置了我的数据存储索引,如下所示:: ="asc"/>
猜你喜欢
  • 2017-09-03
  • 1970-01-01
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多