有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java“多对多”标记中的column属性指的是什么?

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) 个答案

  1. # 1 楼答案

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

    <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”列

  2. # 2 楼答案

    列属性用于链接中间address。那就定了

  3. # 3 楼答案

    该列引用联接表上的外键。看看这个tutorial,它会给你完整的想法。顺便说一句,集合上的表属性应该和tableA\u tableB不同

  4. # 4 楼答案

    The element is the column in the address table that holds the foreign key to the parent object ie. table person and links to the xyz in the person table.

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