Google Datastore Query and Sort для разных свойств - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь отсортировать данные в поле, отличном от того, которое используется в качестве фильтра, с помощью API хранилища данных Google (Java11). Я получаю следующую ошибку

Свойство фильтра неравенства и первый порядок сортировки должны совпадать

Пример: Данные:

Name: Toronto, Temperature: 30
Name: New York, Temperature: 70
Name: Montreal, Temperature: 10

Запрос хранилища данных:

Query<Entity> query = Query.newEntityQueryBuilder()
        .setKind("Cities")
                .addOrderBy(OrderBy.asc("Name"))
        .setFilter(CompositeFilter.and(
            PropertyFilter.ge("Temperature", 30)))
        .build();

Что должно быть таким же, как:

SELECT name,temperature FROM cities WHERE temperature >= '30' ORDER BY name;

Есть ли способ выполнить такой простой запрос в хранилище данных?

1 Ответ

0 голосов
/ 26 марта 2020

Нет, вам придется прибегнуть к помощи. Как указано в поле для заметок на https://cloud.google.com/datastore/docs/concepts/queries#sort_orders:

"Примечание: из-за способа, которым режим хранилища данных выполняет запросы, если запрос указывает фильтры неравенства для свойства и порядки сортировки для других свойств свойство, используемое в фильтрах неравенства, должно быть упорядочено раньше остальных свойств. "

...