0

我有这个功能:

@Override
  public List<Expense> getExpensesBetween(Date firstDate, Date secondDate) {

    Query query = new Query(expenseEntityKind);

    query.addFilter("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, secondDate);

    query.addFilter("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, firstDate);

    Iterable<Entity> entities = service.prepare(query).asIterable();

    return getReturnedExpenses(entities);
  }

我想退回两个日期之间的所有费用,即大于或等于 2012-05-01 并且小于或等于 2012-06-01。我查看了 Google app-engine 的文档。它说我们必须使用复合过滤器。谷歌文档:“但是,如果你想在一个查询中设置多个过滤器,你必须使用CompositeFilter。你必须至少有两个过滤器可以使用CompositeFilter。但是,这个文档似乎很旧,我没有找到任何调用的函数setFilter();.任何建议如何创建复合过滤器?我使用 App-engine sdk 1.6.6。提前谢谢。

4

2 回答 2

1

以下内容取自https://cloud.google.com/appengine/docs/java/datastore/queries在这里可能会有所帮助

Filter heightMinFilter =
  new FilterPredicate("height",
                      FilterOperator.GREATER_THAN_OR_EQUAL,
                      minHeight);

Filter heightMaxFilter =
  new FilterPredicate("height",
                      FilterOperator.LESS_THAN_OR_EQUAL,
                      maxHeight);

//Use CompositeFilter to combine multiple filters
Filter heightRangeFilter =
  CompositeFilterOperator.and(heightMinFilter, heightMaxFilter);
于 2014-10-28T08:45:33.807 回答
0

您正在查找的文档适用于最新版本 (1.7.0)。刚刚介绍了这些功能。这里有一个如何使用 CompositeFilter 的例子(1.7.0 也是)。

于 2012-06-28T10:48:25.150 回答