祖先钥匙和父钥匙的明显区别是什么?

时间:2015-01-19 15:47:20

标签: google-app-engine google-cloud-datastore

Ancestor Key和Parent Key的明显区别是什么?

它基本相同吗? 它如何以不同方式影响get()方法和Query方法?

从GAE KeyFactory课程中,我们只能看到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 guestbookKey = KeyFactory.createKey("Guestbook", guestbookName);
Query q = new Query(kind, guestbookKey); // guestbookKey = ancestor

那么父母和祖先的区别是什么,它们基​​本上是一样的,没有任何区别,只是用不同的符号来表达同样的东西?

1 个答案:

答案 0 :(得分:5)

Parent表示直接父级。 Ancestor是一个更通用的术语,包括直系父母,父母的父母,父母父母的父母等等 - 与英语完全相同。

"实体组",您可以要求进行原子交易的那种,需要由具有共同祖先的实体组成 - 他们不会&#39 ; t需要所有人都有相同的(立即)父母,但他们的下降线确实需要在一个共同的祖先以某种方式相遇"在线#" 34; (所涉及的所有实体的步骤数量不一定相同)。

当您createKey基于parent键时,那个父键可能依次使用其自己的父级 - 如果是这样,那么父母的父母本身并不是你现在所创造的父母,但 是其祖先。