Ключи только запрос, используя ключ - PullRequest
2 голосов
/ 23 февраля 2012

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

Какой самый простой способ сделать это в Java?

Ответы [ 3 ]

4 голосов
/ 23 февраля 2012

Да, это возможно!

Попробуйте что-то вроде этого:

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Query gaeQuery = new Query(entityName);
gaeQuery.setKeysOnly();     
gaeQuery.addFilter("__key__", FilterOperator.EQUAL, key);
PreparedQuery pq = datastore.prepare(gaeQuery);
List<Entity> results = pq.asList(FetchOptions.Builder.withLimit(1));

Key elementKey = null;
if (results.size() == 1) {
    elementKey = results.get(0).getKey();
}   
2 голосов
/ 23 февраля 2012

Для проверки существования одной сущности по ключу, самым простым и дешевым будет просто использовать get():

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
datastore.get(KeyFactory.createKey(kind, long) )

Get (1 операция чтения) дешевле запроса (1 чтение + 1 маленький): http://code.google.com/appengine/docs/billing.html

0 голосов
/ 25 января 2015

Если вы хотите проверить существование, вы можете использовать предложение Виктора, но вместо этого получить счет:

return datastore.prepare(gaeQuery)
    .countEntities(FetchOptions.Builder.withLimit(1)) > 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...