首页 文章

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

提问于
浏览
3

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

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

参考:"Entities, Properties, and Keys"

我使用以下方法生成密钥:

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
private String id;

检查数据存储区时,我的实体键如下所示:

parent.id = agpzfnZpdmVlbGFichQLEgdTZXNzaW9uGICAgICgwMsIDA
child1.id = agpzfnZpdmVlbGFiciYLEgdTZXNzaW9uGICAgICgwMsIDAsSBVN0YWdlGICAgICAwK8KDA
...

(其中Parent有Child类型的子项) . 所以,我正在寻找的是这样的GWT函数:

String getParentIdFromChildId(String childId) {
    String parentId = ...        
    return parentId;
}

所以从客户端(GWT)我可以引用子对象(首先找到它的父对象):

Child child = data.getParent(getParentIdFromChildId(childId)).getChild(childId);

我也可以通过跟踪父ID来解决这个问题,但是如果父信息已经嵌入在子ID中,则这是低效的 .

提前致谢 .

欧文〜

1 回答

  • 1

    child1.getParent() 返回实体的父级 child1 的密钥 .

    因此,如果你有一个实体 child1 ,并且你想要它的父亲的id,那么只需要调用:

    String parentId = child1.getParent().id;
    

    返回它的父母的id .

    在这里阅读更多:Entity 'getParent()' Method Documentation

    不确定这是不是你想要的,但这就是我要做的 .

    谢谢,

    〜萨米尔

相关问题