用于单向关联的具有和不具有连接表的一对多关联

时间:2014-01-06 16:16:42

标签: java hibernate join

hibernate文档说,建议使用单向一对多的连接表,而不是没有连接表。

http://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/associations.html#assoc-unidirectional-12m

  

外键上的单向一对多关联是   不寻常的情况,不推荐。

<class name="Person">
        <id name="id" column="personId">
            <generator class="native"/>
        </id>
        <set name="addresses">
            <key column="personId" 
                not-null="true"/>
            <one-to-many class="Address"/>
        </set>
    </class>

    <class name="Address">
        <id name="id" column="addressId">
            <generator class="native"/>
        </id>
    </class>

http://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/associations.html#assoc-unidirectional-12m

  

连接表上的单向一对多关联是   首选方案。指定unique =“true”,更改多重性   从多对多到一对多。

<class name="Person">
    <id name="id" column="personId">
        <generator class="native"/>
    </id>
    <set name="addresses" table="PersonAddress">
        <key column="personId"/>
        <many-to-many column="addressId"
            unique="true"
            class="Address"/>
    </set>
</class>

<class name="Address">
    <id name="id" column="addressId">
        <generator class="native"/>
    </id>
</class>

1)为什么不建议在连接表中使用一对多?

2)我们也不能使用一对多标签而不是多对多标签来定义与连接表的关系吗?

我是Hibernate的新手,请帮助我理解这一点。

0 个答案:

没有答案