2017-02-12 3 views
0

Я новичок в Google App Engine, и я пытаюсь запросить уникальный идентификатор хранилища данных. Например, я пытаюсь запросить поле ID/Name изображения, приведенного ниже.Запрос на уникальный идентификатор в Google App Engine

Image of Local Database

В настоящее время, код, который я имею в следующем. listID - это ID как long, который я перехожу в KeyFactory. В этом случае это 4573968371548160 или первый на картинке.

Key listKey = KeyFactory.createKey("Lists", listID); 
Query.FilterPredicate listFilter = new Query.FilterPredicate(Entity.KEY_RESERVED_PROPERTY, Query.FilterOperator.EQUAL, listKey); 
Query listQuery = new Query("Lists").setFilter(listFilter); 
List<Entity> listResults = datastore.prepare(listQuery).asList(FetchOptions.Builder.withDefaults()); 

К сожалению, размер listResults возвращается 0, и я не могу понять, почему. Что самое забавное, что когда я изменить запрос

Query.FilterPredicate listFilter = new Query.FilterPredicate(Entity.KEY_RESERVED_PROPERTY, Query.FilterOperator.GREATER_THAN, listKey);

listResults возвращает оба предмета в хранилище данных.

Может кто-нибудь объяснить, почему это может быть и как я могу это исправить?

Спасибо !!!

EDIT:

long listID = Long.parseLong(total_json.getString("listID"));

как я инициализировать listID

+0

Не могли бы вы опубликовать, как вы инициализируете listID –

+0

Я опубликовал как я инициализировал listID –

ответ

0

Оказывается, что я создал объект в базе данных, написав

list = new Entity("Lists", listKeyName);

и я предполагаю, что это сделало его доступным только для этого ключа. Я удалил listKeyName, и теперь все работает нормально.