2010-02-21 3 views
1

저는 JDO를 처음 접했고 복잡한 객체를 사용하여 필터링 할 수 있는지 묻고 싶었습니다.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; 

    ... 
} 

가 지금은 일부 ChildObj을 준 모든 ParentObj 개체를 필터링 할 생각입니다. 나는 가지고있다

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

Java에서 할 수 있기 때문에 확실히 "child == childVal"(즉 평등)을 할 수 있습니다.

과제 ("=")를 할 수 없습니다.

+0

감사합니다. 모든 작업이 제대로되었지만 문제가 있다고 생각합니다. http://code.google.com/appengine/docs/java/datastore/usingjdo.html#Unsupported_Features_of_JDO 조인은 지원되지 않습니다. – Juri

+0

어떤 childObject의 필드에서 그것을 필터링하고 싶다면 - Query query = pm.newQuery (ParentObj.class, "child.id == childId"); query.declareParameters ("String childId"); 나는이 일에 매달렸다. –

관련 문제