【问题标题】:Selecting based on __key__ (a unique identifier) in google appengine [Java]在 google appengine [Java] 中基于 __key__ (唯一标识符)进行选择
【发布时间】:2011-02-23 01:14:40
【问题描述】:

我有

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: invalid filter: key 过滤器值必须是Key;收到 aght52oobW1hIHTWVzc2FnZRiyaQw (a str)。

我也试过

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

但它不起作用..

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

【问题讨论】:

    标签: java google-app-engine gql


    【解决方案1】:

    首先,您不应该手动构造 GQL 字符串 - 这会导致注入漏洞。相反,声明并传入参数,如 here 所述。

    不过,要通过键检索实体,您根本不需要进行查询:使用 getObjectById,如 here 所述。这比使用查询要快得多。

    【讨论】:

    • 解决方案是 QuantityType q = pm.getObjectById(QuantityType.class, KeyFactory.stringToKey(qTypeKey));谢谢
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2012-01-06
    相关资源
    最近更新 更多