如何在Google App Engine的Java数据存储中使用列表属性?

6
一个要放置在数据存储中的对象将具有一组标签。
public class Model 
{
    List<String> tagList
    ...
}

在Python中,Google App Engine有列表属性的概念。如果在Java中存在相应的概念,它是什么?你如何在Java中使用列表属性,在JPA和/或JDO中使用?

我希望答案不是使用Python! - onejigtwojig
有人知道 JPA 的实现吗? - onejigtwojig
1
除了 Java 中的 JPA 和 JDO,还有其他的数据访问 API 选项,例如 Objectify。 - topchef
GAE/J 中的 JPA 实现显然是 GAE 的 DataNucleus 插件。但要注意,这使用的是 DataNucleus 的古老版本,并且并不尝试支持所有的 JPA 功能,而实际上可以使用 BigTable 处理绝大多数功能。 - DataNucleus
2个回答

10

请查看我的博客文章: 使用关系索引实体和Objectify实现Google Datastore中的高效关键字搜索。它讨论了如何使用Relation Index Entities 和 Objectify实现具有列表属性的搜索。

总结一下:

  Query<DocumentKeywords> query = ofy.query(DocumentKeywords.class);
  for (String keyword : keywords) {
    query = query.filter("keywords", keyword);
  }

  Set<Key<Document>> keys = query.<Document>fetchParentKeys();

  Collection<Document> documents = ofy.get(keys).values();

其中DocumentKeywords包含其Document实体的所有关键字的列表属性(集合),而Document实体是DocumentKeywords的父实体。


3

JDO 中使用:

@Persistent
private List<ContactInfo> contactInfoSets;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接