如何在Hibernate中的连接表中进行一对多关系

时间:2012-02-06 17:09:36

标签: hibernate mapping one-to-many

这里是映射文件:

BusinessCard.hbm.xml

<hibernate-mapping>
    <class name="com.hibernate.BusinessCard" table="BUSINESSCARD">
        <id length="4" name="id" type="int">
            <column length="4" name="ID"/>
            <generator class="increment"/>
        </id>
        <property generated="never" lazy="false" name="name" type="java.lang.String">
            <column length="50" name="NAME"/>
        </property>
        <property generated="never" lazy="false" name="description" type="java.lang.String">
            <column length="250" name="DESCRIPTION"/>
        </property>

    </class>
</hibernate-mapping>

BusinessGup.hbm.xml

<hibernate-mapping>
    <class name="com.hibernate.BusinessGroup" table="BUSINESSGROUP">
        <id name="id" type="int">
            <column name="ID" length="4"/>
            <generator class="increment" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" length="25"/>
        </property>
        <property name="description" type="java.lang.String">
            <column name="DESCRIPTION" length="250"/>
        </property>
    </class>
</hibernate-mapping>

BusinessContact.hbm.xml(我想要进行一对多映射的连接表)

<hibernate-mapping>
    <class name="com.hibernate.BusinessContact" table="BUSINESSCONTACT">
        <id name="id" type="int">
            <column name="ID" length="4"/>
            <generator class="increment" />
        </id>
        <property name="businessId" type="java.lang.Integer">
            <column name="BUSINESSID" length="4"/>
        </property>
        <property name="groupId" type="java.lang.Integer">
            <column name="GROUPID" length="4"/>
        </property>      
    </class>
</hibernate-mapping>

因此,在BUSINESSCONTACT表上,我尝试在businesscard和businessgroup之间进行一对多映射。不幸的是,尽管在网上搜索解决方案我无法做到这一点。任何人都可以帮我解决这个问题吗?

THX ..

1 个答案:

答案 0 :(得分:2)

不要在网上搜索。请改为阅读reference documentation

这是the section showing an example of a one-to-many unidirectional association

您的映射没有意义。如果您想在BusinessGroup和BusinessCard之间建立一对多关联,那么BusinessGroup类应该有一组BusinessCards。

不应该有BusinessContact类,因为BUSINESSCONTACT表只是一个连接表,而不是一个实体。它唯一的用途是保持其他实体之间的关联,因此它完全由协会管理。