java - 无法通过键从数据存储区获取实体

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

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

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

然后 key 作为字符串发送到另一个 servlet,如 4644337115725824。当我尝试通过此代码获取实体时

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

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

最佳答案

我认为您可能遇到 key 的序列化/反序列化问题。要将 key 序列化为网络安全字符串,请使用 KeyFactory.keyToString(key) :

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

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

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

关于java - 无法通过键从数据存储区获取实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24779092/

相关文章:

elasticsearch - 将Google Cloud Datastore与ElasticSearch同步

python - 查询 Google Cloud 数据存储区且祖先未返回任何内容

java - 在 google app engine java 本地数据存储中添加/编辑实体

java - Checkstyle 冗长的解决方案?

java - 从 Groovy 实例化 Java 类

java - 使用 Logback 即时更改日志文件路径属性

python - 尝试导入测试床时出错

google-app-engine - 使用 GCS 客户端库模拟云存储的 GAE java 上的文件 uri 是哪些?

java - Spring Data REST - 如何处理对象所有权

python - Google 应用引擎发送邮件引发 ApplicationError : 1 Internal Error