在实体的方法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
答案 0 :(得分:1)
我认为文档中存在歧义。它应该说“可能未完全指定,可能不能用于某些操作”而不是“不会完全指定并且不能用于某些操作”。 / p>
创建实体时,您提供了创建完全指定密钥所需的所有信息:实体类型(“Person”)和标识符(“John”)。文档中的这段内容适用于仅指定实体类型的情况,在这种情况下,标识符将在保存实体时由数据存储区自动生成。如果没有此标识符,则密钥不能用于get
操作。