2015-02-23 2 views
0

В методе getKey() состояний субъекта:Appengine субъект полностью указанный ключ

Возвращает ключ, представляющий эту сущность. Если объект еще не сохранил (например, через DatastoreService.put), этот ключ не будет полностью указан и не может использоваться для определенных операций (например, DatastoreService.get). Когда объект будет сохранен, его Ключ будет полностью обновлен .

Что конкретно обозначает означает?

В следующем тесте ключи одинаковы до и после DatastoreService#put(Entity):

DatastoreService ds = DatastoreServiceFactory.getDatastoreService(); 
Entity e = new Entity("Person", "John"); 

System.out.println(e.getKey()); // output: Person("John") 
System.out.println(KeyFactory.keyToString(e.getKey())); // output: aglub19hcHBfaWRyEAsSBlBlcnNvbiIESm9obgw 

Key k = ds.put(e); 

System.out.println(k); // output: Person("John") 
System.out.println(KeyFactory.keyToString(k)); // output: aglub19hcHBfaWRyEAsSBlBlcnNvbiIESm9obgw 

ответ

1

Я думаю, что есть неоднозначность в документации. Вместо «не будет полностью указано и не может быть использовано для определенных операций», он должен сказать: «может не быть полностью указанным и может не использоваться для определенных операций».

Когда вы создали объект, вы предоставили всю информацию, необходимую для создания полностью указанного ключа: вид сущности («Лицо») и идентификатор («Джон»). Этот отрывок из документации относится к ситуациям, когда вы указываете только тип сущности, и в этом случае идентификатор будет автоматически генерироваться хранилищем данных, когда объект сохраняется. Без этого идентификатора ключ не может использоваться для операции get.

Смежные вопросы