无法通过密钥从数据存储区获取实体

时间:2014-07-16 11:00:24

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

我正在尝试通过密钥访问获取实体,但每次我尝试获取它时我都会获得异常。

    datastore.put(en);
    String key = en.getKey();

然后将密钥作为字符串发送到另一个servlet,如4644337115725824.当我试图通过此代码获取实体时

    Key key = KeyFactory.createKey("User", req.getParameter("key"));
    Entity en = datastore.get(key);

在最后一行,我有一个EntityNotFoundException并且'找不到与该键匹配的实体:User(“4644337115725824”)' 怎么了?

1 个答案:

答案 0 :(得分:0)

我认为您的密钥可能存在序列化/反序列化问题。要将密钥序列化为websafe String,请使用KeyFactory.keyToString(key)

Key key = entity.getKey();
String serializedKey = KeyFactory.keyToString(key);

稍后,当您想要反序列化另一个servlet上的键时,可以使用KeyFactory.stringToKey(string)

Key deserializedKey = KeyFactory.stringToKey(serializedKey);
Entity en = datastore.get(deserializedKey);