我刚刚学习JDO和GAE,并且非常坚持这一点。
我已经离开了
public class Article {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
...
}
现在还有父母:
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));
非常感谢任何帮助!
答案 0 :(得分:2)
孩子的钥匙包含有关其父母的信息。您需要使用包含父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();
随着您的层次结构越来越深入,该表单变得更有用,因为您可以在调用addChild
之前将一堆getKey
链接在一起。
如果您不知道某篇文章的父级,我认为您在执行GQL查询时遇到困难,而不是按键获取。