Как я могу сохранить этот сложный объект в базе данных, используя Hibernate? - PullRequest
0 голосов
/ 31 января 2012

В базе данных mysql имеются таблицы базы данных, соответствующие этим классам, для которых определены внешние ключи. Дайте мне знать, если мне нужно поставить эти отношения здесь.

class Itinerary {
 Airport Departure;
 Airport Arrival;
 Airline flight;
}

class Airport{
 int idAirport;
 String terminal;
 City city;
}

class City{
 int idCity;
 String name;
}    

class Airline{
 int idAirline;
 String flightNumber;
}

Я использую что-то вроде этого: http://pastebin.com/YzYMTBg3, чтобы построить маршрутный объект. Это то, что меня озадачивает, и я не знаю, какой хороший способ справиться с этим, используя hibernate в качестве моего ORM.


AirSegmentBuilder segmentBuilder = new AirSegmentBuilder();
segmentBuilder.addDepartureAirport("JFK");
segmentBuilder.addArrivalAirport("SFO");

Я пытаюсь добавить аэропорт вылета и прилета (объекты) в мой маршрут здесь. Эти объекты в свою очередь сохраняются в базе данных как:

Аэропорт:

id    |    name    | terminal
1     |    JFK     |  1
2     |    SFO     |  B1

Итак, когда мне нужно добавить эти аэропорты в мой маршрут, нужно ли мне сначала выбирать объекты аэропорта, используя запрос на основе имени ?; а потом привязать эти объекты к маршруту? Как только я построю маршрутный объект и сохраню его в базе данных с помощью hibernate, сможет ли он правильно подобрать внешние ключи?

1 Ответ

2 голосов
/ 31 января 2012

Предполагается, что вы используете xml для настройки вашего спящего режима. Вы можете написать свой Itinerary.hbm.xml так, чтобы достичь своей цели:

<many-to-one name="Airport" class="pkg.Airport"
                column="foregn_key1" not-null="true" fetch="join" />
<many-to-one name="Airline" class="pkg.Airline"
                column="foregn_key2" not-null="true" fetch="join" />

где Аэропорт, Авиакомпания и Маршрут - таблицы в вашей БД. Надеюсь, это поможет ...

Примечание. Это всего лишь пример. Возможно, вам придется обновить ваши бины соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...