使用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。有没有办法使用持久性管理器中的查询或方法来完成它?
感谢。
答案 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 ='语法的内容,但我现在找不到任何参考资料。