【问题标题】:JDO Queries: Is it possible to filter using complex objects?JDO 查询:是否可以使用复杂对象进行过滤?
【发布时间】:2010-02-21 19:51:15
【问题描述】:

我对 JDO 很陌生,想问一下是否可以使用复杂对象进行过滤。我知道你可以这样做:

Query q = pm.newQuery(MyClass.class, "field1 < value");
q.declareParameters("int value");
List results = q.execute(205);
Iterator iter = results.iterator();

但假设我有以下情况:

@PersistenceCapable(...)
class ParentObj{
   @PrimaryKey
   @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
   String id;
   ...
   @Persistent
   ChildObj child;
}

@PersistenceCapable(...)
class ChildObj{
   @Persistent
   @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
   String id;

   ...
}

现在假设我要过滤所有给定ChildObjParentObj 对象。我有

public List<ParentObj> getAllParentObjBy(ChildObj child){
   PersistenceManager pm = ...
   Query query = pm.newQuery(ParentObj.class, "child = childVal");
   query.declareParameters("ChildObj childVal");

   Collection result = (Collection)query.execute(child);
   //???

   return result;
}

这是非常伪代码,但我希望思路清晰。我是否可以像第一个示例中那样使用 Query 对象,但在这种情况下使用 child 实例?

【问题讨论】:

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


    【解决方案1】:

    你绝对可以做“child == childVal”(即平等)......因为你可以在 Java 中。

    你不能做赋值(“=”)。

    【讨论】:

    • 感谢您的信息。我做对了一切,但我想这是问题所在:code.google.com/appengine/docs/java/datastore/… 不支持加入。
    • 如果想从一些 childObject 的字段中过滤它,比如 -- Query query = pm.newQuery(ParentObj.class, "child.id == childId"); query.declareParameters("String childId");我被困在这了。
    猜你喜欢
    • 1970-01-01
    • 2023-01-13
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2015-01-22
    相关资源
    最近更新 更多