【问题标题】:Hibernate mapping xml one-to-one (many-to-one)Hibernate映射xml一对一(多对一)
【发布时间】:2016-07-10 02:11:09
【问题描述】:

我正在尝试映射两个具有一对一关系的类之间的关系。在互联网上查找后,似乎人们更喜欢使用多对一来映射它。

例如有一个类 Order 和一个类 Bill。 Bill 持有发票的 FK。

这是我对比尔的映射:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Mar 21, 2016 10:46:20 PM by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
    <class name="domain.Bill" table="BILL">
        <id name="id" type="int">
            <column name="ID" />
            <generator class="native" />
        </id>

        <many-to-one name="order" class="domain.Order" column="ORDER_ID" unique="true" not-null="true"/>
    </class>
</hibernate-mapping>

正如您在上面看到的,在我的 Bill 映射中,我可以指定 Fk 到 Order 的列,但是我应该在 Order 的映射中添加什么,因为它没有到 Bill 的 Fk?

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Mar 21, 2016 10:46:20 PM by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
    <class name="domain.Order" table="ORDER">
        <id name="id" type="int">
            <column name="ID" />
            <generator class="native" />
        </id>

        <many-to-one name="bill" class="domain.Bill" ???? fetch="select"/>

    </class>
</hibernate-mapping>

【问题讨论】:

    标签: java xml hibernate mapping


    【解决方案1】:

    您应该尝试按原样映射它:一对一。

    我知道人们可能会推荐多对一的唯一原因是因为一对一关联反面的延迟加载问题。那么你可能想要一个假的反面的一对多关联(毕竟它是多对一的唯一逻辑反面)。

    不过,请查看 this answer 以了解不同的替代方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-18
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-22
      相关资源
      最近更新 更多