Запросы JDO: возможно ли фильтровать, используя сложные объекты? - PullRequest
1 голос
/ 21 февраля 2010

Я новичок в 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 Ответ

1 голос
/ 22 февраля 2010

Вы определенно можете сделать "child == childVal" (т.е. равенство) ... так как вы можете в Java.

Вы не можете выполнять назначение ("=").

...