Appengine Entity的完全指定密钥

时间:2015-02-23 21:54:56

标签: java google-app-engine

在实体的方法getKey()中说明:

  

返回表示此实体的Key。如果实体还没有   已保存(例如通过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 个答案:

答案 0 :(得分:1)

我认为文档中存在歧义。它应该说“可能未完全指定,可能不能用于某些操作”而不是“不会完全指定并且不能用于某些操作”。 / p>

创建实体时,您提供了创建完全指定密钥所需的所有信息:实体类型(“Person”)和标识符(“John”)。文档中的这段内容适用于仅指定实体类型的情况,在这种情况下,标识符将在保存实体时由数据存储区自动生成。如果没有此标识符,则密钥不能用于get操作。