gpt4 book ai didi

java - 如何在JDO中唯一地识别和获取子对象

转载 作者:行者123 更新时间:2023-11-30 05:11:19 25 4
gpt4 key购买 nike

我刚刚学习 JDO 和 GAE,并且在这方面陷入了困境。

我已经不再拥有

public class Article {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
...
}

现在也有 parent 了:

public class ArticleCollection {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
private long count
private Set<Article> articles;
}

但是执行此操作后,以下通过 id 获取文章的代码不再起作用。如何唯一标识一个对象?

Article article = (Article)pm.getObjectById(KeyFactory.createKey(Article.class.getName(), id));

非常感谢任何帮助!

最佳答案

子项的 key 包含有关其父项的信息。您需要使用包含父 ID 的 KeyFactory 方法。

createKey(Key parent, java.lang.String kind, long id)
Creates a new Key with the provided parent from its kind and ID.

查看 javadoc更多细节。为了方便起见,还有一个 Builder 类可以让您执行以下操作:

Key key = new Builder("ArticleCollection", 123).addChild("Article", 1424).getKey();

随着层次结构的加深,该表单变得更加有用,因为您可以在调用 getKey 之前将一堆 addChild 链接在一起。

如果您不知道文章的父项,我认为您会陷入执行 GQL 查询而不是按键获取的困境。

关于java - 如何在JDO中唯一地识别和获取子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3270791/

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