Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine GWT:解密GAE-JDO密钥以访问父级_Google App Engine_Gwt_Key_Jdo - Fatal编程技术网

Google app engine GWT:解密GAE-JDO密钥以访问父级

Google app engine GWT:解密GAE-JDO密钥以访问父级,google-app-engine,gwt,key,jdo,Google App Engine,Gwt,Key,Jdo,GAE-JDO文档建议可以从子密钥检索父密钥: 还要注意的是,密钥的字符串表示不是加密的:用户可以解码密钥字符串以提取其组件,包括实体及其祖先的种类和标识符 参考: 我使用以下命令生成密钥: @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) @Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true") priva

GAE-JDO文档建议可以从子密钥检索父密钥:

还要注意的是,密钥的字符串表示不是加密的:用户可以解码密钥字符串以提取其组件,包括实体及其祖先的种类和标识符

参考:

我使用以下命令生成密钥:

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
private String id;
parent.id = agpzfnZpdmVlbGFichQLEgdTZXNzaW9uGICAgICgwMsIDA
child1.id = agpzfnZpdmVlbGFiciYLEgdTZXNzaW9uGICAgICgwMsIDAsSBVN0YWdlGICAgICAwK8KDA
...
检查数据存储时,我的实体键如下所示:

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
private String id;
parent.id = agpzfnZpdmVlbGFichQLEgdTZXNzaW9uGICAgICgwMsIDA
child1.id = agpzfnZpdmVlbGFiciYLEgdTZXNzaW9uGICAgICgwMsIDAsSBVN0YWdlGICAgICAwK8KDA
...
(其中父项具有类型为Child的子项)。所以,我要找的是这样一个GWT函数:

String getParentIdFromChildId(String childId) {
    String parentId = ...        
    return parentId;
}
因此,我可以从客户端(GWT)引用子对象(通过首先查找其父对象):

我还可以通过跟踪父id来解决这个问题,但是如果父id信息已经嵌入到子id中,这是低效的

提前谢谢

~Owen

child1.getParent()
返回实体
child1
的父项的键

因此,如果您有一个实体
child1
,并且需要其父级id,只需调用:

String parentId = child1.getParent().id;
返回它的父级id

请在此处阅读更多信息:

我不确定这是不是你想要的,但我会这么做的

谢谢


~Samir

您找到了在Java或python中执行此操作的算法或例程吗?如果找到了,Java版本应该直接在gwt中工作,或者应该易于移植。没有,还没有找到如何在Java或python中执行此操作。子id似乎由附加到父id的字符串组成,如果模式是子id从一个固定的位置开始,那么算法很简单,但我不相信。尝试寻找更多的文档或使用更多的键。你的解决方案适用于App Engine-我需要一个GWT解决方案。