【发布时间】:2013-04-08 11:43:18
【问题描述】:
我是谷歌 appengine 和 jdo 的新手。我不知道如何用两个实体在 JDO 中编写查询。我有如下所示的 UserProfile 和 UserFeed 实体。
@PersistenceCapable
public class UserProfile {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
private String firstName;
@Persistent
private String lastName;
@Persistent
private List<Key> friendProfileKeys;
}
@PersistenceCapable
public class UserFeed {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
private Key profileKey;
@Persistent
private String comment;
@Persistent
private UserFeedType userFeedType;//Friends,Public
}
下面的查询我用来获取用户发布的提要列表。
final Query query = pm.newQuery(UserFeed.class);
final List v;
query.setFilter("profileKey == paramUserProfileKey");
query.declareParameters("com.google.appengine.api.datastore.Key paramUserProfileKey");
v = (List) query.execute(profile.getKey());
请帮助我获取用户及其朋友发布的提要列表以及公开帖子。
【问题讨论】:
-
你遇到了什么错误,在哪里?
-
我的查询仅适用于获取用户提要列表。我确实知道如何使用 UserProfile.friendProfileKeys 和 UserFeed.userFeedType 从 UserFeed 实体获取用户朋友提要和公共提要。
-
对不起,我最终没有理解您要检索的内容...您想要所有类型为 public 的 UserFeed,以及与给定 UserProfile 相关的那些,以及与所有相关的那些作为给定 UserProfile 朋友的 UserProfile?你想在一个查询中得到它吗?
-
是的.. 我希望它在一个查询中
-
正如 GAE/J 的文档所说,您不能在连接该数据存储的方式上做太多事情(显然 JDOQL 语言可以支持它......但如果不能使用 unlderying 数据存储那么这并不重要)。
标签: java google-app-engine jdo