java - 为什么无论层次结构如何,GAE 实体名称都必须是唯一的?

标签 java google-app-engine objectify

我使用的是 Google App Engine,使用的是 Objectify。考虑以下简化设置:

@Entity
public class UserGroup
{
    @Id
    private String identifier;
}

@Entity
public class User
{
    @Id
    private String username;
    private String password;
    @Parent
    Ref<UserGroup> usergroup;
}

现在我假设,如果我有两个用户组(我们称它们为 A 和 B),我最多可以拥有三个用户名为“admin”的用户实体:一个以用户组 A 作为父级,一个以用户组 B 为父级作为父级,以及没有用户组作为父级的一个。

然而,事实并非如此。如果我在 A 组中创建 admin,然后在没有组的情况下创建 admin,然后在 B 组中创建 admin,则只有一个:B 中的一个,它覆盖了另外两个。

对我来说,这似乎不一致。如果不指定 B 作为父实体,并且只给出“admin”作为名称,我将无法在 B 中找到该人,因为这意味着在根目录中查找他。但是,如果我在任何地方创建一个具有该名称的用户,它就会覆盖具有相同名称的用户,无论他在对象层次结构中的位置如何。

我的问题是:为什么会这样?

最佳答案

您在测试中犯了某种错误。 {UserGroupA, "admin"} 和 {UserGroupB, "admin"} 确实是具有单独 key 的单独实体。

关于java - 为什么无论层次结构如何,GAE 实体名称都必须是唯一的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15551321/

相关文章:

java - 使用 Spring Data 和 Hibernate 的 Spring MVC 分页

java - 独立应用程序上的 TokenResponseException : missing scope when using the RemoteAPI of AppEngine in Java with OAuth 2. 0

google-app-engine - 本地开发时如何忽略某些文件夹的变化?

java - 无法使用 dll 注入(inject)和 JNI 通过 oracle 表单 GUI 对象附加

java - JVM JIT 编译器优化的限制

visibility - Objectify 是否允许实体字段的所有类型的可见性?

java - 对象化分页

java - Objectify 是否有相当于 Datastore.add() 的功能来仅插入不存在的实体?

java - 巧妙地迭代

python - 你如何从 python appengine 中的 basehandler 调用处理程序?