在我最近的Android Im項目上,使用OrmLite建立一對多關係以及簡單的一對一關係。 我注意到,對於一對多關係,子對象持有對數據庫中父對象的外鍵引用。仍然當加載父對象OrmLite知道該怎麼做,並加載子元素的集合,這當然是所需的行爲。Android OrmLite外鍵/外鍵集合
但是,對於簡單的一對一關係,父對象似乎需要持有外鍵列才能實現相同的行爲。
所以真正的問題:是否有可能讓OrmLite在一對一的關係中加載子對象,因爲外鍵只在子對象中設置,因爲它是具有一對多關係的標準行爲?
下面是一些示例代碼:
@DatabaseTable
public class Parent
{
@DatabaseField(foreign = true)
private Child1 child1;
@ForeignCollectionField
private Collection<Child2> children2;
}
所以在孩子1和2,我需要有這樣的參考父:
public class Child1/Child2
{
@DatabaseField(foreign = true)
private Parent parent;
}
因此節省的child2我簡單地設置時
child2.setParent(parent);
child2Dao.create(child2)
但是,爲了在查詢包含child1和child2的父代時達到相同的行爲,我將LD必須圍繞拯救關係的其他方式:
parent.setChild1(child1)
parentDao.create(parent)
這是非常不方便的,因爲我想無論是child1 /的child2都拿着父母的外鍵或周圍的其他方法。但混合似乎有點難看!
任何想法如何實現?
我在這裏搜索了這個問題的答案,但沒有找到答案。如果它是重複的,我很抱歉!
非常感謝!
編輯:
更準確的說: 是否有可能設置的外鍵我child1表,仍然能夠查詢父時獲得child1。 ORMLite爲child2的外部收集自動完成它。我想要child1的相同行爲。 但是,當我設置
child1.setParent(parent);
child1Dao.create(child1);
,然後進行查詢
Parent parent = parentDao.queryForId(1)
只的child2因爲父表沒有引用(外鍵)的child1獲得。只有child1具有對父級的引用。因此:我想要OrmLite自動更新父外鍵列,或者告訴Ormlite仍然獲取child1,即使父代中沒有設置外鍵(因爲這與child2的集合情況完全相同)。 這是可能的嗎?或不?
我希望這不是太混亂:)我完全知道,只是將外鍵設置在父項中會更簡單。但我真的不喜歡這種方法,因爲我最終會得到一些孩子有父母的外鍵,有些孩子沒有。
非常感謝您
非常感謝您爲您的快速響應實現這一目標!我完全知道ORM的基本功能,因爲Im來自MS實體框架背景。我似乎對自己的問題不太清楚,我會盡力更新。 –
所以請看看編輯。我實際上可能需要類似於@ForeignField(我認爲它不存在於OrmLite中),它不存儲外鍵但是告訴ORMLite在查詢帳戶(父)時包含命令(子) –