在google appengine [Java]中基于__key __(唯一标识符)进行选择

时间:2010-05-23 23:37:01

标签: java google-app-engine gql

我有

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

    @Persistent
    private String type;
}

我正在尝试设置一个查询,以便通过它的密钥

获取正确的QuantityType
gql = "select * from QuantityType where __key__='aght52oobW1hIHTWVzc2FnZRiyAQw'";

但它没有用,因为

BadFilterError:BadFilterError:无效过滤器:过滤器值必须是Key;收到了aght52oobW1hIHTWVzc2FnZRiyAQw(str)。

我也尝试过使用

gql = "select * from QuantityType where __key__=='" + KeyFactory.stringToKey(qTypeKey)+"'";

但它不起作用..

如何通过密钥从我的数据存储中获取特定对象?

1 个答案:

答案 0 :(得分:2)

首先,你不应该手工构建一个GQL字符串 - 这会导致注入漏洞。相反,声明并传入参数,如记录here

要按键检索实体,您根本不需要执行查询:使用getObjectById,如文档here所示。这比使用查询要快得多。