【发布时间】:2019-09-30 07:31:37
【问题描述】:
我正在构建一个复合过滤器,当我为此查询设置排序顺序时,它有 OR 和 AND 过滤器运算符,它没有给出正确的结果。
我尝试执行的查询是 { status == Initiated OR (Status == Failed AND failedCount
Filter initiatedFilter = new FilterPredicate("status", FilterOperator.EQUAL, "Initiated");
Filter failedFilter = new FilterPredicate("status", FilterOperator.EQUAL, "Failed");
Filter failedCountFilter = new FilterPredicate("failedCount", FilterOperator.LESS_THAN_OR_EQUAL, 5);
CompositeFilter failedCompositeFilter = CompositeFilterOperator.and(failedFilter, failedCountFilter);
CompositeFilter initaiedFailedFilter = CompositeFilterOperator.or(initiatedFilter, failedCompositeFilter);
Query query2 = new Query("JobInstance").setFilter(initaiedFailedFilter).addSort("failedCount", SortDirection.ASCENDING).addSort("createdAt", SortDirection.ASCENDING);
jobEntitesList = datastoreService.prepare(query2).asList(FetchOptions.Builder.withLimit(limit));
for (Entity jobEntity2 : jobEntitesList) {
/* doing some task */
}
我观察到的是,如果删除 addSort() 它工作正常。但对我来说排序很重要。我希望结果应该是“createdAt”顺序。如果我删除 failedCount 那么它会抛出一些错误。
【问题讨论】: