2012-12-02 25 views
7

Mam EntityKind SuggestedInterest. Kiedy zapełniam to kluczem "GrpId" i właściwością "suggestint".Google datastore - zapytanie o kluczowe wartości

Teraz muszę „suggestedint” wartość dla żądanej „GrpId”

Więc piszę kwerendy jako:

String findSuggestedInterest(String grpId) 
{ 
    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 
    Filter filter = new FilterPredicate(Entity.KEY_RESERVED_PROPERTY,FilterOperator.EQUAL,grpId); 
    Query q0 = new Query("SuggestedInterest").setFilter(filter); 
    PreparedQuery pq0 = datastore.prepare(q0); 
    Entity result = pq0.asSingleEntity(); 
    return result.getProperty("suggestedint").toString();  
} 

Kiedy wykonanie tego kodu uzyskać

java.lang.IllegalArgumentException: __key__ filter value must be a Key 

Dokumenty dla programistów mówiły, że należy używać Entity.KEY_RESERVED_PROPERTY do odpytywania kluczy, ale chyba źle mnie zrozumiałem. Jaki jest prawidłowy sposób na zapytanie o klucz?

Odpowiedz

12

Należy zdać mu Key zamiast String:

Key grpKey = KeyFactory.createKey("SuggestedInterest", grpId) 

następnie użyć go:

Filter filter = 
    new FilterPredicate(Entity.KEY_RESERVED_PROPERTY,FilterOperator.EQUAL,grpKey); 
Powiązane problemy