3

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

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

REF:“实体、属性和键”

我正在使用以下内容生成密钥:

@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 中,那么这是低效的。

提前致谢。

~欧文

4

1 回答 1

1

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

因此,如果您有一个 entity child1,并且想要其父 ID,只需调用:

String parentId = child1.getParent().id;

返回它的父母的身份证。

在这里阅读更多: 实体'getParent()'方法文档

不确定这是否是您想要的,但我会这样做。

谢谢,

~萨米尔

于 2013-06-11T01:16:22.783 回答