我剛開始使用OrmLite,所以我正在玩它。我無法理解一些概念,尤其是。處理多對多的關係。如何使用ormlite以多對多的關係檢索整個數據集?
這是我的主表:
Pc
Name
Domain
Ethernet
IP
Gateway
Subnet
MAC
而這裏的人,確保許多一對多關係,就像在網上-例如:
PcEth
我通過填充數據庫:
PC somePc = new PC("randomPc", "someDomain");
pcDao.create(somePc);
Ethernet eth1 = new Ethernet("127.255.0.1", "255.0.0.0", "192.168.1.1", "macadress");
Ethernet eth2 = new Ethernet("192.168.1.1", "255.0.0.0", "192.168.1.1", "macadress");
ethernetDao.create(eth1);
ethernetDao.create(eth2);
pcEthernetDao.create(new PcEthernet(somePc, eth1));
但我很不確定我如何讓屬於PC的所有數據都回來。我有點期待
PC pc = pcDao.queryForId(1);
自動檢索其他表的數據。這不就是ORM應該做什麼嗎?有一個對象,所以我不需要關心底層數據庫?然而,我所得到的只是Pc.object,它只有PC定義的屬性。 (在另一方面,它不是是奇怪,因爲我只處理上pcDao。)
然而,我怎麼建立一個查詢,使我得到一個「元對象」包含所有數據屬於PC?一個包含PC數據的對象,以及屬於PC的以太網設備列表(也包括它們自己的Dns地址列表)以及軟件和操作系統列表。
我現在應該手動解決依賴關係嗎?查詢Pc,請求PcEthernet-table獲得匹配的Ids,檢索EthernetDevice,等等?
還是有一招我還沒有抓到呢?
因此,在處理n對m關係時,似乎我必須構建自己的getAllMfrom(N)和getAllNfrom(M)方法。我想知道它是否會更通用一些。 – k0pernikus