【问题标题】:how can I persist this complex object to database using hibernate?如何使用休眠将这个复杂的对象保存到数据库中?
【发布时间】:2012-01-31 09:43:08
【问题描述】:

在后端的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

所以当我需要将这些机场添加到我的行程中时,我是否需要先使用基于名称的查询来获取机场对象?然后将这些对象附加到行程中?一旦我构建了行程对象并使用休眠将其保存到数据库中,它是否能够正确获取外键?

【问题讨论】:

    标签: java hibernate orm foreign-keys


    【解决方案1】:

    假设您使用 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" />
    

    其中 Airport、Airline 和 Itinerary 是数据库中的表。 希望这会有所帮助...

    注意 - 这只是一个例子。您可能需要相应地更新您的 bean。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多