的GAE,JDO文檔表明,它可以從子鍵檢索父鍵:GWT:解密GAE-JDO鍵進入母體
還要注意一個關鍵的字符串表示未加密:用戶可以解碼密鑰字符串以提取其組件,包括實體及其祖先的種類和標識符。
REF:使用"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
...
(其中父母有子類型的孩子)。所以,我要找的是一個GWT功能是這樣的:
String getParentIdFromChildId(String childId) {
String parentId = ...
return parentId;
}
因此從客戶端(GWT)我可以引用子對象(通過首先找到它的父):
Child child = data.getParent(getParentIdFromChildId(childId)).getChild(childId);
我可以通過跟蹤父ID來解決這個問題,但是如果父信息已經嵌入到子ID中,則效率不高。
在此先感謝。
〜歐文
你找到的算法或程序做,在Java或Python?如果是這樣的Java版本應該直接在GWT工作,或者應該很容易端口。 – 2013-02-19 12:14:56
不,還沒有找到如何在Java或Python中做到這一點。 – opowell 2013-02-19 15:30:43
似乎孩子ID是由一個附加到父親的字符串組成的,如果該模式是兒童ID在一個固定的位置開始,算法是微不足道的,但我不相信。嘗試尋找更多文檔或使用更多密鑰。 – 2013-02-19 20:14:06