【问题标题】:Is appengine auto generated Long @id unique within entity scope?appengine 自动生成的 Long @id 在实体范围内是否唯一?
【发布时间】:2015-04-07 04:24:45
【问题描述】:

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

@id
Long ID;

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

通过objectify函数创建Key:

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

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

【问题讨论】:

    标签: java google-app-engine objectify


    【解决方案1】:

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

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

    这些组件的联合使密钥唯一。 因此,自动生成策略保证 ID 在相同的 namespace|parent|kind|id 内是唯一的,或者仅在 kind|id 内是唯一的如果没有父母

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

    【讨论】:

    • 感谢您的澄清。
    【解决方案2】:

    自动生成的 id 对于 kind 和 parent 来说是唯一的。对于任何给定的种类和 null(不存在)父级,分配器将分配一个唯一值。

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      • 2011-08-02
      • 1970-01-01
      • 2019-09-29
      相关资源
      最近更新 更多