Я создаю составной фильтр, у него есть оператор ИЛИ, а затем оператор И, когда я устанавливаю порядок сортировки для этого запроса, который не дает правильного результата.
запрос, который я пытаюсь выполнить: {status == Инициировано ИЛИ (Status == Failed AND failedCount <= 5)}.он фактически выполняет запрос без какой-либо ошибки, но результат не совсем правильный.он извлекает только «status == failed & failedCount <= 5», а не статус == инициирован.и порядок, в котором я нуждаюсь, - это поле «createAt». </p>
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 ().но для меня сортировка важна.Я хочу, чтобы результат был в порядке «создан при».Если я удаляю failCount, он выдаёт какую-то ошибку.