Hibernate映射xml一对一(多对一)

时间:2016-03-22 23:28:06

标签: java xml hibernate mapping

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

例如,有一个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.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的映射中添加什么,因为它没有Fk到Bill?

<?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>

1 个答案:

答案 0 :(得分:1)

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

我知道为什么人们可能推荐多对一的唯一原因是由于一对一关联的反面的延迟加载问题。然后你可能想要在反面进行假的一对多关联(毕竟它是多对一的唯一逻辑反面)。

但是,请查看this answer以了解不同的选择。