Appengine JDO,如何检索知道子属性和父键的子对象?

时间:2011-08-07 00:21:13

标签: java google-app-engine jdo datanucleus

使用peristance管理器,如何检索知道子属性和父键的子对象?

Parent的定义如下:

public class User {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;

@Persistent(mappedBy = "user")
@Element(dependent = "true")
private List<Section> sections;
...

孩子的定义如下:

public class Section {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;

@Persistent
private User user;

@Persistent
private String title;
...

知道'用户'ID和'部分'标题,我该如何检索该部分?我试图构建一个查询来使用类似的东西检索该部分:'where title == xxx ANDuser.id¿ == xxx'但我不确定如何指定用户ID。有没有办法使用持久性管理器中的查询或方法来完成它?

感谢。

2 个答案:

答案 0 :(得分:1)

我终于用这种方法做到了:

public static Section getSectionByTitle(String title, Key user_key){
    PersistenceManager pm = PMF.get().getPersistenceManager();  
    Query query = pm.newQuery("select from "+Section.class.getName()+" WHERE title == s && user == keyParam");
    query.declareParameters("String s, String k");
    query.setUnique(true);
    Section section = (Section) query.execute(title, user_key.getId());
    return section;
}

答案 1 :(得分:0)

您可以在查询对象上调用此方法:

q.setAncestor(ancestorKey);

阅读this page以获取更多信息(Ancestor Queries)。

我记得看到类似“ANCESTOR ='语法的内容,但我现在找不到任何参考资料。