Tim*_*Tim 4 java google-app-engine google-cloud-datastore
我一直在尝试通过密钥类型从 GAE 数据存储区获取实体。这是我用来检索密钥的代码:
strId = myVideo.getKey().toString();
Run Code Online (Sandbox Code Playgroud)
myVideo 的类型是实体。该myVideo.getKey().toString()方法返回的值为“Video(121)”。这是尝试通过实体的键检索实体的代码:
Entity video = ds.get(key);
Run Code Online (Sandbox Code Playgroud)
尝试从数据存储中检索实体时会引发以下异常:
未找到与键匹配的实体:Video("Video(121)")
有没有办法从实体类型的对象中获取编码的密钥?
在此处的 App Engine 文档中记录了在键和字符串之间进行转换的各种方法。简而言之,要获取密钥的字符串版本,您需要执行以下操作:
String employeeKeyStr = KeyFactory.keyToString(employeeKey);
Run Code Online (Sandbox Code Playgroud)
要将其转换回可以使用 获取的密钥ds.get(),您应该执行以下操作:
Key employeeKey = KeyFactory.stringToKey(employeeKeyStr);
Run Code Online (Sandbox Code Playgroud)
您使用的字符串版本是.toString()密钥的人类可读版本,不打算作为机器可读标识符传递。
当然,如果您打算在代码中传递键,则根本不需要将它们转换为字符串。相反,如果您想将它们用作外部标识符,您可能需要阅读链接部分的其余部分,其中讨论了祖先、ID 和名称;大多数情况下,当您想要传递标识符时,仅名称或 ID 就足够了,并且比完整密钥更短且更易读。
| 归档时间: |
|
| 查看次数: |
2893 次 |
| 最近记录: |