我的数据存储区中有两个组织在他们自己的命名空间中。让我们说在namespace2中存在organisation1,在namespace2中存在organisation2。我正在通过其web-safe-key检索组织。让我们说organisation1的web-safe-key是orgWebSafeKey1,organisation2的web-safe-key是orgWebSafeKey2。我正在使用以下代码来组建一个组织:
NamespaceManager.set("namespace1");
Organisation organisation = (Organisation) ofy().load().key(Key.create(orgWebSafeKey1)).now();
上面的代码按照我的预期工作,因为organisation1存在于namespace1中,我正在尝试在其名称空间中获取该组织。
但是,如果我只是更改组织的websafekey,那么根据我的预期,查询应该导致“null”组织,因为在namespace1中没有组织密钥orgWebSafeKey2。但实际上它给了我组织2。
NamespaceManager.set("namespace1");
Organisation organisation = (Organisation) ofy().load().key(Key.create(orgWebSafeKey2)).now();
如果上述查询结果是正确的并且根据objectify和datastore预期,那么我可以假设按键查询在所有命名空间中全局工作吗? 我还要确认在这种情况下Key.create(orgWebSafeKey2)不会更改密钥的命名空间?并且查询是根据键的命名空间而不是NamespaceManager.set(“namespace1”)?
运行的答案 0 :(得分:0)
数据存储区密钥包含以下组件:
由于命名空间是密钥的一部分,因此无论NamespaceManager设置的命名空间如何,按键查找实体始终会找到正确的实体。换句话说,Key是一个GUID,可以跨所有应用程序/项目唯一标识实体。
有关您的问题的详细信息/答案,请参阅以下链接: