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中,则这是低效的。
提前致谢。
〜欧文
答案 0 :(得分:1)
child1.getParent()
返回实体child1
的父级的密钥。
因此,如果您有一个实体child1
,并且您想要其父级的ID,请致电:
String parentId = child1.getParent().id;
返回父母的身份。
在这里阅读更多内容: Entity 'getParent()' Method Documentation
不确定这是不是你想要的,但我就是这样做的。
谢谢,
〜萨米尔