Ich habe gerade angefangen, OrmLite zu benutzen und spiele damit herum. Ich habe Schwierigkeiten, einige Konzepte zu verstehen, insbesondere den Umgang mit vielen zu vielen Beziehungen.
Dies sind meine wichtigsten Tabellen:
Pc
Name
Domain
Ethernet
IP
Gateway
Subnet
MAC
Und hier die, die wie im Online-Beispiel eine Beziehung von vielen zu vielen gewährleisten:
PcEth
Ich befülle die Datenbank über:
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));
Aber ich bin mir ziemlich unsicher, wie ich alle Daten, die zu einem Pc gehören, zurückbekomme. Ich habe irgendwie erwartet, dass die
PC pc = pcDao.queryForId(1);
um automatisch die Daten der anderen Tabellen abzurufen. Ist es nicht das, was ein ORM tun sollte? Ein Objekt zu haben, damit ich mich nicht um die zugrunde liegende Datenbank kümmern muss? Aber alles, was ich habe, ist in der Tat nur das Pc.object, das nur die PC-definierten Attribute hat. (Andererseits ist es nicht その überraschend, da ich nur auf dem pcDao handle).
Doch wie soll ich eine Abfrage so aufbauen, dass ich ein "Metaobjekt" erhalte, das alle zu einem PC gehörenden Daten enthält? Ein Objekt, das die Daten des PCs und eine Liste der zu den PCs gehörenden Ethernet-Geräte (die auch ihre eigene Liste von DNS-Adressen enthalten) sowie eine Liste von Software und Betriebssystemen enthält.
Soll ich nun die Abhängigkeiten manuell lösen? Einen PC abfragen, die PcEthernet-Tabelle nach übereinstimmenden Ids fragen, das EthernetDevice abrufen und so weiter?
Oder gibt es einen Trick, den ich noch nicht ganz verstanden habe?