具有相同ID的多个数据存储区实体!

Ril*_*ark 9 google-app-engine google-cloud-datastore

我遇到了一个很大的问题 - 我同类数据存储区中的多个实体具有相同的ID!它们的键是Keys,但我一直假设key.getId()将返回一个在同一类型的所有实体中唯一的数字.

不是这样!不同的密钥可以返回相同的ID!Aurgh!我可以通过使用数据查看器来确认这一点 - 在id/name列中具有相同值的多个实体.具有重复键的实体都在不同的实体组中 - 它们具有不同的父键.我没有在同一个实体组中看到任何重复ID,但我不知道这不会发生.

  1. 这是正常的吗?
  2. 有没有办法获得自动生成的唯一数字标识符?我知道我可以提供自己的id值,但是为此我必须实现自己的系统似乎极端!

Dav*_*ill 6

密钥不仅包括id或密钥名称 - 它还包括种类,父级和应用程序ID.这就是为什么多个实体可能共享密钥的相同ID部分 - 只要密钥的某个其他组件不同,它就完全没问题.

如果要生成唯一 ID,请使用该db.allocate_ids方法.