Я только начал использовать 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 = pcDao.queryForId(1);
для автоматического извлечения данных из других таблиц. Разве это не то, что должен делать ORM? Имея объект, поэтому мне не нужно заботиться о базовой базе данных? Тем не менее, все, что я получил, - это всего лишь объект Pc.object, который имеет только определенные компьютером атрибуты. (С другой стороны, это не , что удивительно, поскольку я имею дело только с pcDao.)
Но как мне построить запрос, чтобы получить «метаобъект», содержащий все данные, принадлежащие ПК? Объект, который включает в себя данные ПК, а также список ethernetDevices, принадлежащих к ПК (который также включает их собственный список Dns-адресов), а также список программного обеспечения и операционных систем.
Должен ли я теперь вручную решать зависимости? Запросить Pc, попросить PcEthernet-таблицу получить соответствующие идентификаторы, получить EthernetDevice и т. Д.?
Или есть хитрость, которую я еще не совсем уловил?