比方說,我有一個成分實體和一個食譜實體。許多食譜可能指的是相同的成分。GreenDao只能在一個方向上執行To-Many關係嗎?
recipe 1 uses ingredients 1, 2 and 3
recipe 2 uses ingredients 1, 3 and 5
我希望能夠從配方加載的成分,但不的相反。
我想我需要通過創建一個單獨的實體來跟蹤所有配方< - >成分映射,將其建模爲多對多關係。
我的理解是正確的,或者是有一些方法,使具有一對多的關係,這項工作?
我不認爲使用單個ToMany關係將會起作用,因爲GreenDao要求他們在目標實體中有一個外鍵返回到原始實體(請參閱docs中的「建模多對多關係」)。這意味着配料只能引用一個配方 - 只要兩個配方參考相同的配料,那麼其中一個會失去它的關係。
FTR,如果不建立外鍵的目標實體,則一對多關係重新啓動應用程序後會丟失(即它僅適用於當前的數據庫會話)。提示:要在自動化測試中模擬此場景,請在加載對象並聲明它包含您期望的值之前調用daoSession.clear()
。
您所描述的內容聽起來像是多對多的關係。你需要用一個擁有這種關係的實體來建模。你可以看到這個答案,它涉及建模一個多對多的關係:http://stackoverflow.com/a/14837390/1163156 – mweathers