为什么Google AppEngine有两个主键,'key'和'id / name'?

时间:2013-10-21 17:11:11

标签: google-app-engine

如果您将一个或另一个留空,或者未在您的实体中指定,则无论如何都会为该实体创建一个密钥/ ID,如管理控制台数据存储区查看器中所示。

奖金问题:为什么在放入()之后你无法获得Entity对象的ID? entity.getProperty("id")返回null。密钥对象无法序列化,因此GWT无法使用。

参考:

https://developers.google.com/appengine/docs/java/datastore/entities

https://developers.google.com/appengine/docs/java/datastore/jdo/creatinggettinganddeletingdata#Keys

1 个答案:

答案 0 :(得分:5)

实体具有Key,而Keys(持久化实体)具有自动分配的ID或程序员提供的名称。 name / id是Key的属性,而不是Entity的属性。

在Java中代替entity.getProperty("id")而不是entity.getKey().getId()(如果您为密钥命名,则为.getName()。)

较低级别的详细信息位于:

https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Entity https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Key

`