JDO查询:是否可以使用复杂对象进行过滤?

时间:2010-02-21 19:51:16

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

我是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;

   ...
}

现在假设我要过滤所有ParentObj个具有某个给定ChildObj的对象。我有

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实例吗?

1 个答案:

答案 0 :(得分:1)

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

你不能做任务(“=”)。