gpt4 book ai didi

java - 具有属于不同类型 parent 的实体的类型

转载 作者:行者123 更新时间:2023-12-01 13:35:53 24 4
gpt4 key购买 nike

在我的 GAE 应用程序中,我想实现一个特殊的实体,一个可以连接到不同类型的父实体的子实体。这是一个附件。我想将这些项目放入同一实体组中,使用祖先查询等。

可能有:

article1 with Key('Article', 1)
attach1 with Key(article1, 'Attach', 1)
attach2 with Key(article1, 'Attach', 2)

task1 with Key('Task', 1)
attach3 with Key(task1, 'Attach', 1)

如您所见,它是相同的实体种类 (Attach),但具有来自不同类型父项的父键(ArticleTask)。

我以前没有尝试过这样的关系,不确定它是否会起作用。 GAE 数据存储可以吗?或者这可能只是一个糟糕的实践和架构缺陷?

最佳答案

数据存储区仅使用键来定义实体组,因此它不介意这些键是否与不同类型相关。

但是,如果您想要get()一个实体,您将需要知道它的祖先,以便您可以形成关键的“路径”。因此,按照您的示例(在 Java 中),如果您想要 get() attach3,您需要知道它的祖先 (task1) 属于 Kind Task:

Key ancestorKey = KeyFactory.create("Task", 1); // need to know ancestor is a Task
Key attach3Key = KeyFactory.create(ancestorKey, "Attach", 3);
Entity attach3 = datastore.get(attach3Key);

...而如果您想检索attach1:

Key ancestorKey = KeyFactory.create("Article", 1); // here ancestor is an Article
Key attach1Key = KeyFactory.create(ancestorKey, "Attach", 1);
Entity attach1 = datastore.get(attach1Key);

您可能想考虑一下您的应用程序需要提供哪种类型的事务、查询和获取,以了解这是否适合您。

关于java - 具有属于不同类型 parent 的实体的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21283507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com