代码之家  ›  专栏  ›  技术社区  ›  Juri

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

  •  1
  • Juri  · 技术社区  · 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;
    
       ...
    }
    

    现在假设我想过滤所有 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;
    }
    

    这是非常伪代码,但我希望这个想法是清楚的。我是否可以像在第一个示例中那样使用查询对象,但在本例中, child 实例?

    1 回复  |  直到 14 年前
        1
  •  1
  •   DataNucleus    15 年前

    你当然可以做“child==childval”(即平等)。因为你可以在Java中。

    您不能执行赋值(“=”)。