当我只知道实体的 id 时,如何获取实体的 parent 键?
How can I get the parent key of an entity when I only know its id?
我有一个 child 的 ID,我想获取 parent 实体而不遍历所有实体。
我无法使用 KeyFactory.createKey 创建密钥,因为我不知道 parent,而且我无法对 Id 使用过滤器,因为我无法创建密钥。
一个例子可能会阐明:
- 实体供应商
- 实体产品,其供应商为 Parent。
如果我知道产品的 ID (Key.getId()),如何找到供应商?我错过了什么?
你不能,id
本身的信息不够,因为那是相对于其父级的信息;以以下键为例:
Key('Supplier', 1, 'Product', 1)
Key('Supplier', 2, 'Product', 1)
Key('Supplier', 1, 'Product', 2)
这是三种独特的产品,但如您所见,仅知道您正在寻找 Product.id == 1
还远远不足以找到合适的产品。
这种情况并没有真正好的解决方案,除了你已经想到(并排除)了循环遍历它们之外,即使那样可能会有多个供应商(正如我方便制作的例子所证明的那样)。
所以你需要一个更好的设计 :) 永远记住在 parent/child 关系中,only 有效键是一个完整的键。
我有一个 child 的 ID,我想获取 parent 实体而不遍历所有实体。
我无法使用 KeyFactory.createKey 创建密钥,因为我不知道 parent,而且我无法对 Id 使用过滤器,因为我无法创建密钥。
一个例子可能会阐明: - 实体供应商 - 实体产品,其供应商为 Parent。
如果我知道产品的 ID (Key.getId()),如何找到供应商?我错过了什么?
你不能,id
本身的信息不够,因为那是相对于其父级的信息;以以下键为例:
Key('Supplier', 1, 'Product', 1)
Key('Supplier', 2, 'Product', 1)
Key('Supplier', 1, 'Product', 2)
这是三种独特的产品,但如您所见,仅知道您正在寻找 Product.id == 1
还远远不足以找到合适的产品。
这种情况并没有真正好的解决方案,除了你已经想到(并排除)了循环遍历它们之外,即使那样可能会有多个供应商(正如我方便制作的例子所证明的那样)。
所以你需要一个更好的设计 :) 永远记住在 parent/child 关系中,only 有效键是一个完整的键。