“多对多”标签中的列属性是指什么?

时间:2013-06-25 06:26:49

标签: java hibernate java-ee hibernate-mapping

column标记内many to many属性的含义是什么?

<class name="pojo.Person" table="person">
      <id column="p_id" name="personID">
          <generator class="increment" />
      </id>
      <property name="personName" column="p_name" />
      <set name="addressSet" table="address">
          <key column="a_id" />
          <many-to-many class="pojo.Address" column="xyz" />
      </set>
</class>

<class name="pojo.Address" table="address">
      <id column="a_id" name="addressID">
          <generator class="foreign" />
      </id>
      <property name="address" column="a_id" />
</class>

它指的是哪一列?

我从这个映射中理解的是,personaddress类之间有很多关系。

4 个答案:

答案 0 :(得分:0)

  

元素是地址表中包含的列   父对象的外键即。表人和xyz的链接   在人员表中。

因此,您需要告诉子表中的哪个外键映射到父表中的哪个列作为主键。

答案 1 :(得分:0)

该列引用连接表上的外键。看看这个tutorial,它会给你完整的想法。顺便说一下,set上的table属性应该与tableA_tableB不同。

答案 2 :(得分:0)

在这两个表之间应该有一个中间表,例如

<class name="pojo.Person" table="person">
      <id column="p_id" name="personID">
          <generator class="increment" />
      </id>
      <property name="personName" column="p_name" />
      <set name="addressSet" table="map">
          <key column="p_id" />
          <many-to-many class="pojo.Address" column="a_id" />
      </set>
</class>

<class name="pojo.map" table="map">          
    <composite-id>
        <key-property name="person_ID" column="p_id"/>
        <key-property name="address_ID" column="a_id"/>
    </composite-id>
    <property name="person_ID" type="java.lang.Long" insert="false" update="false">
        <column name="p_id"/>
    </property>
    <property name="address_ID" type="java.lang.Long" insert="false" update="false">
        <column name="a_id"/>
    </property>

</class>

<class name="pojo.Address" table="address">
      <id column="a_id" name="addressID">
          <generator class="assigned"/>
      </id>
      <property name="address" column="address" />
</class>

并拥有mapper的bean类

public class map{

    private long person_ID;

    private long address_ID;

    public long getPerson_ID() {
        return person_ID;
    }


    public void setPerson_ID(long person_ID) {
        this.person_ID= person_ID;
    }


    public long getAddress_ID() {
        return address_ID;
    }


    public void setAddress_ID(long address_ID) {
        this.address_ID= address_ID;
    }
}

这里是集合

<set name="addressSet" table="map">
     <key column="p_id" />
     <many-to-many class="pojo.Address" column="a_id" />
</set>

关键列

<key column="p_id" />

表示人员表中的“id”列和

<many-to-many class="pojo.Address" column="a_id" />

列是地址表中的“id”列

答案 3 :(得分:-1)

列属性用于链接中间address。已设置。