【问题标题】:JDO - Querying/linking child by parent (Google App Engine)?JDO - 按父母(Google App Engine)查询/链接孩子?
【发布时间】:2013-05-10 20:25:52
【问题描述】:

我一直试图让 JDO 处理父/子关系,但我没有取得多大成功。使用here 所见的关系设置和here 所见的查询,我希望能够将孩子链接到父母,然后能够查询给定父母的所有孩子。不幸的是,我似乎没有正确地询问孩子们。我不断收到错误:

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

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

@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);

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

【问题讨论】:

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


    【解决方案1】:

    所以在declareParameters调用中定义“Parent”的包。它不在根包中是吗?而且 JDOQL 不允许赋值“=”,应该是“==”……就像在 Java 中一样,因为 JDOQL 使用 Java 语法。

    【讨论】:

    • 现在需要更改哪个“=”?
    • 啊,在查询里面。知道了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多