2010-07-14 1 views
1

GAE를 사용하여 저장된 객체 목록을 쿼리하려면 어떻게합니까? Set 필드에 지정된 문자열이 들어 있습니까? 즉,이 가상의 예를 상상해 : 어떻게 Query 모든 사진을, "데이터베이스"40,000 사진이 가정"집합"이 특정 문자열과 일치하는 모든 엔터티를 쿼리 하시겠습니까?

@PersistenceCapable 
class Photos { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Key key; 

    String name = ""; 
    Set<String> tag = new Hashset<String>(); 
} 

어디 tag='2009'

또는 구글의 문서에서 다른 예를 들어, 다음과 같은 클래스가있는 경우 :

@PersistenceCapable 
public class Person { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Key key; 

    @Persistent 
    private Set<Key> favoriteFoods; 

    // ... 
} 

좋아하는 음식 키가있는 모든 사람 개체의 목록을 어떻게 가져 옵니까?

답변

1

어떻게 Java로 할 수 있습니까? collField.contains (: stringParam)

1

은 기본적으로 구글 문서에서 가져 같은 것을 사용해보십시오 : 아래의 주석 사항에 따라

Query query = pm.newQuery("select from com.example.Note where tag == tagname order by created"); 
query.declareParameters("String tagname"); 
return (List<Note>) query.execute(tag); 

,이 또한 작동하는 것 같다 :

Query query = pm.newQuery("select from com.example.Note where tags.contains(tagname) order by created"); 
query.declareParameters("String tagname"); 
return (List<Note>) query.execute(tag); 
+1

쿼리가 JDO를 준수하도록하려면 시도하지 마십시오. Java에서는 "Collection == String"을 사용할 수 없으므로 JDOQL에서는 사용할 수 없습니다. "포함 (...)"을 사용합니다. – DataNucleus