Ancestor Key 和 Parent Key 的明显区别是什么?
What is the clear difference of a Ancestor Key and a Parent Key?
祖先密钥和父密钥的明显区别是什么?
基本一样吗? 它对 get() 方法和 Query
方法有何不同影响?
从 GAE KeyFactory
class,我们只能看到 Key
父代而没有这样的祖先 Key
。
public static Key createKey(Key parent, String kind, String name) {
return createKey(parent, kind, name, (AppIdNamespace)null);
}
然后像这样使用密钥:
Entity e = new Entity(key); // key may include a parent Key
在典型的查询中,例如在留言簿应用中。我们可以创建一个 Key 作为祖先,这样我们就可以拥有不同的留言簿,可以将实体保存到其中,例如:
Key guestbookKey = KeyFactory.createKey("Guestbook", guestbookName);
Query q = new Query(kind, guestbookKey); // guestbookKey = ancestor
那么Parent和Ancestor有什么不同呢,他们是不是基本上是同一个东西,没有任何区别,只是符号不同而已?
A Parent
表示 立即 parent。 Ancestor
是一个更通用的术语,包括直接 parents、parents of parents、parents of parents of parents,等等——与英语中的用法完全相同。
一个 "entity group",你可以在其上请求原子交易的那种,需要由具有共同 祖先 的实体组成——它们不不需要所有人都具有相同的(直接)parent,但他们的血统确实需要在一个共同的祖先处相遇方式 "up the line"(所涉及的所有实体的步骤数不一定相同)。
当您 createKey
基于 parent
键时,那个 parent 键可能反过来用它自己的 parent -- 如果是这样,那么 parent 的 parent 本身并不是您现在创建的 parent,而是 是它的祖先。
祖先密钥和父密钥的明显区别是什么?
基本一样吗? 它对 get() 方法和 Query
方法有何不同影响?
从 GAE KeyFactory
class,我们只能看到 Key
父代而没有这样的祖先 Key
。
public static Key createKey(Key parent, String kind, String name) {
return createKey(parent, kind, name, (AppIdNamespace)null);
}
然后像这样使用密钥:
Entity e = new Entity(key); // key may include a parent Key
在典型的查询中,例如在留言簿应用中。我们可以创建一个 Key 作为祖先,这样我们就可以拥有不同的留言簿,可以将实体保存到其中,例如:
Key guestbookKey = KeyFactory.createKey("Guestbook", guestbookName);
Query q = new Query(kind, guestbookKey); // guestbookKey = ancestor
那么Parent和Ancestor有什么不同呢,他们是不是基本上是同一个东西,没有任何区别,只是符号不同而已?
A Parent
表示 立即 parent。 Ancestor
是一个更通用的术语,包括直接 parents、parents of parents、parents of parents of parents,等等——与英语中的用法完全相同。
一个 "entity group",你可以在其上请求原子交易的那种,需要由具有共同 祖先 的实体组成——它们不不需要所有人都具有相同的(直接)parent,但他们的血统确实需要在一个共同的祖先处相遇方式 "up the line"(所涉及的所有实体的步骤数不一定相同)。
当您 createKey
基于 parent
键时,那个 parent 键可能反过来用它自己的 parent -- 如果是这样,那么 parent 的 parent 本身并不是您现在创建的 parent,而是 是它的祖先。