我有这个功能:
@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。我看了一眼谷歌应用引擎的documentations。它说我们必须使用复合滤波器。 Google文档:“但是,如果您要在查询中设置多个过滤器,则必须使用CompositeFilter
。您必须至少有两个过滤器才能使用CompositeFilter
。但是,此文档似乎是旧的,我没有找到任何名为setFilter();
的函数。任何建议如何创建复合过滤器?我使用App-engine sdk 1.6.6。提前感谢。
答案 0 :(得分: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);
答案 1 :(得分:0)
您正在寻找的文档适用于最新版本(1.7.0)。这些功能刚刚推出。 Here一个如何使用CompositeFilter的例子(也是1.7.0)。