Запрос к хранилищу данных Google по ключу и сортировка по другому свойству - PullRequest
4 голосов
/ 30 июня 2010

Я использую интерфейс хранилища данных низкого уровня в Java.У меня есть сущность, которая хранит коллекцию ключей.Я хотел бы запросить хранилище данных, чтобы получить все объекты в коллекции.Однако я также хотел бы отсортировать их по созданному свойству даты.Итак, я хотел бы сделать что-то вроде этого:

Query query = new Query(EndeavorUpdate.ENDEAVOR_UPDATE_ENTITY_TYPE);
//getEndeavorUpdateIds() returns a List < Key >
query.addFilter("__key__", Query.FilterOperator.EQUAL, getEndeavorUpdateIds());
query.addSort(EndeavorUpdate.CREATED_DATE_PROPERTY);
PreparedQuery pq = ds.prepare(query);

Однако я получаю исключение, говорящее, что «набор значений не разрешен».Это работает, если я использую IN вместо EQUAL, но это кажется чрезвычайно неэффективным.

Есть ли способ эффективно выполнить этот запрос, или я должен получить все сущности из хранилища данных и выполнить сортировку самостоятельно?

1 Ответ

4 голосов
/ 30 июня 2010

Поскольку у вас есть ключи, наиболее эффективно было бы просто получить все объекты напрямую по ключу, а затем самостоятельно отсортировать их по дате.

Выполнение сортировки самостоятельно может также избавить вас от необходимости в индексев поле даты создания модели EndeavorUpdate (в зависимости от того, нужен ли вам такой индекс где-то еще в вашем коде или нет).

...