JDO - 按父母(Google App Engine)查询/关联子女?

时间:2013-05-10 20:25:53

标签: java google-app-engine google-cloud-datastore jdo

我一直在尝试让JDO与父母/子女关系合作,但我没有取得多大成功。使用如here所示的关系设置和查看here的查询,我希望能够将子项链接到父项,然后能够查询给定父项的所有子项。不幸的是,我似乎没有正确地质疑孩子们。我一直收到错误:

 Class Parent for query has not been resolved. Check the query and any imports/aliases specification

这是我的代码的样子。首先是Parent类:

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Parent
{
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;
    @SuppressWarnings("unused")
    @Persistent(mappedBy = "parent")
    private ArrayList<Child> children;
    @Persistent
    private String name;

    //...
}

儿童班:

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Child
{

    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;
    @Persistent
    private Parent parent;
    @Persistent
    private String name;

    //...
}

最后,我尝试的查询看起来像这样:

Query q = pm.newQuery(Child.class);
q.setFilter("parent = parentParam");
q.declareParameters("Parent parentParam");
@SuppressWarnings("unchecked")
List<Child> childList = (List<Child>) q.execute(someParent);

有什么建议我可能做错了吗?非常感谢!

1 个答案:

答案 0 :(得分:2)

因此在declareParameters调用中定义“Parent”包。它不是在root包中吗? JDOQL不允许赋值“=”,它应该是“==”......就像在Java中一样,因为JDOQL使用Java语法。