我正在尝试通过 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/