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

Fal*_*con 2 java google-app-engine objectify

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

@id
Long ID;
Run Code Online (Sandbox Code Playgroud)

我在变量 ID 中设置了 null,因此 App Engine 会自动为我的实体生成 ID。

通过 objectify 函数创建密钥:

Key.create(java.lang.Class<? extends T> kindClass, long id)
Run Code Online (Sandbox Code Playgroud)

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

Dev*_*ter 5

Datastore 中的每个实体都有一个唯一标识它的键。密钥由以下组件组成:

  • 实体的命名空间,允许多租户
  • 实体的种类,为了 Da​​tastore 查询而对其进行分类
  • 单个实体的标识符,可以是键名字符串或整数数字 ID
  • 在 Datastore 层次结构中定位实体的可选祖先路径

这些组件的结合使密钥独一无二。因此,自动生成策略保证 ID 在同一个命名空间内是唯一的|parent|kind|id或只有kind|id如果没有 parent

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