appengine自动生成Long @id在实体范围内是否唯一?

时间:2015-04-07 04:24:46

标签: java google-app-engine objectify

使用objectify,我使用App Engine自动生成的id为我的实体创建id,如下所示:

@id
Long ID;

我将null放在变量ID中,因此App Engine会自动为我的实体生成id。

通过客观化功能创建密钥:

Key.create(java.lang.Class<? extends T> kindClass, long id)

我能否得出结论,没有任何父关系的实体的自动生成id是唯一的?

2 个答案:

答案 0 :(得分:4)

  

数据存储区中的每个实体都有一个唯一标识它的密钥。该   key由以下组件组成:

     
      
  • 实体的名称空间,允许多租户
  •   
  • 实体的类型,为数据存储区查询的目的对其进行分类
  •   
  • 单个实体的标识符,可以是键名字符串和整数数字ID
  •   
  • 在Datastore层次结构中定位实体的可选祖先路径
  •   

这些组件的结合是一个独特的关键。 因此,自动生成策略保证ID在同一名称空间| parent | kind | id 中唯一,或仅 kind | id 如果没有父母

来源:https://cloud.google.com/appengine/docs/java/datastore/entities

答案 1 :(得分:3)

自动生成的ID对于种类和父级是唯一的。对于任何给定类型和null(缺席)父级,分配器将分配唯一值。