【问题标题】:Google datastore - querying on key values谷歌数据存储 - 查询键值
【发布时间】:2012-11-20 07:47:06
【问题描述】:

我有一个 EntityKind SuggestedInterest。 当我用键“GrpId”和属性“suggestedint”填充它时。

现在,我需要请求的“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 来查询键,但我想我误解了。查询key的正确方法是什么?

【问题讨论】:

    标签: java google-app-engine google-cloud-datastore


    【解决方案1】:

    你应该传递一个Key而不是String

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

    然后使用它:

     Filter filter = 
        new FilterPredicate(Entity.KEY_RESERVED_PROPERTY,FilterOperator.EQUAL,grpKey);
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多