2012-12-02 15 views
7

私はEntityKind SuggestedInterestを持っています。 キー "GrpId"とプロパティ "suggestedint"で設定します。Googleのデータストア - キー値のクエリ

さて、私は要求された "GRPID" の "suggestedint" の値を必要とする

だから、私のようにクエリを記述します。私はこのコードを実行すると

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

私は

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

開発者のドキュメントでは、Entity.KEY_RESERVED_PROPERTYを使用してキーを照会するように指示されていましたが、誤解していると思います。キーを照会する正しい方法は何ですか?

答えて

12

あなたはStringするのではなく、それをKeyを渡す必要があります。

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

をし、それを使用します。

Filter filter = 
    new FilterPredicate(Entity.KEY_RESERVED_PROPERTY,FilterOperator.EQUAL,grpKey); 
関連する問題