0

我只是想知道如何在數據存儲中使用低級別的API實現兩個實體之間的多對多關係,我一直在尋找,但我可以找不到解釋如何做這種關係的文檔。我希望有人能幫幫忙。應用引擎數據存儲和Java低級API:多對多關係

但如果我有實體A和實體B中的多對多關係,我該如何存儲在數據存儲中。我的意思是,這是一個很好的解決方案,可以在數據存儲中存儲多對多的實用性,或者什麼是一個好的解決方案?這段代碼是好還是錯?

Entity entityA = new Entity("TypeA"); 
entityA.setProperty("name", "nameUserA"); 

Entity entityB = new Entity("TypeA"); 
entityA.setProperty("name", "nameUserB"); 

ds.put(entityA); 
ds.put(entityB); 

Entity entityChild = new Entity("entityChild",entityAKey); 
entityChild.setProperty("name","child"); 

ds.put(entityChild); 

Entity entityChild = new Entity("entityChild",entityBKey); 
entityChild.setProperty("name","child"); 

ds.put(entityChild); 
+0

爲entityChild創建了什麼?你想如何關係關係,在什麼實體之間? –

+0

如果我有一個孩子實體,並且每個父母的密鑰創建兩次是一個很好的解決方案,我只是試圖表示一個多對多的ralatioship?還是僅創建一次並創建一個包含這些實體的鍵作爲屬性的實體會更好? – Alexander

+0

是不是1-1(最大1-n,如果一個實體會有少數子女)關係? entityA - first entityChild,entityB - second entityChild –

回答

0

AppEngine不提供任何多對多關係的功能。

可以效仿,通過創建自己的實體,有兩個領域:

class AtoBRelations { 
    Key entityA 
    Key entityB 
} 

我的常見模式有一個額外的表許多一對多的關係,甚至對其它數據庫

順便說一句,對於大多數情況下,它不會是最佳解決方案。最佳解決方案取決於這許多一對多的關係必須如何被使用,並且有一些不同的解決方案

例如有第二個解決方案:你可以存儲相關實體的列表,如:

class EntityA { 
    List<Key> entitiesB 
} 
+0

但是如果我有實體A和實體B在多對多的關係中,我怎麼能存儲在數據存儲中。我的意思是。 – Alexander

+0

您必須創建第三個條目'AtoBRelationship',並將其存儲。順便說一句,它更好地告訴你到底想要達到什麼,並且我告訴你最好的解決方案爲你的確切場景 –

+0

我已經編輯了更多的信息我的問題,你說我必須創建一個新的實體有兩個屬性,鍵在關係中發現的實體有多少? – Alexander

相關問題