2012-12-02 27 views
7

Tôi có một EntityKind SuggestedInterest. Khi tôi điền thông tin đó với khóa "GrpId" và thuộc tính "gợi ý".Kho dữ liệu của Google - truy vấn trên các giá trị khóa

Bây giờ, tôi cần "suggestedint" giá trị cho một yêu cầu "GrpId"

Vì vậy, tôi viết các truy vấn như:

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();  
} 

Khi tôi thực thi mã này tôi nhận được

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

Tài liệu dành cho nhà phát triển được yêu cầu sử dụng Entity.KEY_RESERVED_PROPERTY để truy vấn trên các khóa, nhưng tôi đoán tôi đã hiểu lầm. Cách truy vấn chính xác trên khóa là gì?

Trả lời

12

Bạn nên vượt qua nó một Key thay vì String:

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

sau đó sử dụng nó:

Filter filter = 
    new FilterPredicate(Entity.KEY_RESERVED_PROPERTY,FilterOperator.EQUAL,grpKey); 
Các vấn đề liên quan