我在我的数据存储中有两个组织在他们自己的名称空间中。让我们说organisation1存在于namespace1中,organisation2存在于namespace2中。我正在通过它的网络安全密钥检索组织。让我们说organisation1的网络安全密钥是orgWebSafeKey1,organisation2的网络安全密钥是orgWebSafeKey2.我正在使用以下代码来获得一个组织:
NamespaceManager.set("namespace1");
Organisation organisation = (Organisation) ofy().load().key(Key.create(orgWebSafeKey1)).now();上面的代码如我所预期的那样工作,因为organisation1存在于namespace1中,我正在尝试将该组织置于其命名空间中。
但是,如果我只是更改了组织的网络安全密钥,那么按照我的预期,下面的查询应该会导致“空”组织,因为namespace1中没有密钥的组织。但实际上它给了我organisation2。
NamespaceManager.set("namespace1");
Organisation organisation = (Organisation) ofy().load().key(Key.create(orgWebSafeKey2)).now();如果根据objectify和数据存储,上面的查询结果是正确的和预期的,那么我可以假设按键进行的查询是全局的,跨所有的命名空间吗?我还想确认在本例中Key.create(orgWebSafeKey2)不会更改密钥的命名空间吗?查询是根据键的名称空间运行的,而不是由NamespaceManager.set("namespace1")运行的?
发布于 2016-11-15 02:24:41
Datastore密钥包含以下组件:
因为名称空间是键的一部分,所以按键查找实体总是找到正确的实体,而不管NamespaceManager设置的名称空间如何。换句话说,键是一个GUID,它唯一地标识了所有应用程序/项目中的一个实体。
有关您的问题的更多细节/答案,请参阅下面的链接:
https://stackoverflow.com/questions/40582703
复制相似问题