简体   繁体   English

无法在Person和Address类之间建立“多对多”关系

[英]Unable to make 'many-to-many' relation between Person and Address class

How do I make many-to-many relation between 2 classes Person and Address ? 如何在2类“ Person和“ Address之间建立many-to-many关系? Following is the POJO for Person and Address respectively. 以下分别是PersonAddressPOJO

Person : 人物:

public class Person {
    private int personID;
    private String name;
    private Person person;
    private List addressList;

    public List getAddressList() {
        return addressList;
    }

    public void setAddressList(List addressList) {
        this.addressList = addressList;
    }

    public int getPersonID() {
        return personID;
    }

    public void setPersonID(int personID) {
        this.personID = personID;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

}

Address : 地址 :

public class Address {
    private int addressID;
    private String address;
    private Person person;

    public int getAddressID() {
        return addressID;
    }

    public void setAddressID(int addressID) {
        this.addressID = addressID;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

}

The relation I am trying to define is A person can have many addresses and one address can belong to many people . 我想定义的关系是: A person can have many addresses and one address can belong to many people I am unable to represent this in the mapping xml . 我无法在mapping xml表示这一点。 This is what I have been able to do till now. 到目前为止,这是我能够做的。

    <hibernate-mapping>
      <class name="pojo.Person" table="person">
          <id name="personID" column="p_id">
              <generator class="increment" />
          </id>
          <property name="name" column="p_name" />
          <list name="addressList" table="address">
              <key column="a_id" />
              <!-- DEFINE MANY TO MANY --!>
          </list> 
      </class>

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

How do I define many to many relation between these two classes ? 如何定义这两个类之间的many to many关系?

Add private List persons instead of private Person person in Address class. Address类中添加private List persons而不是private Person person

Configure your mapping.xml like this 像这样配置您的mapping.xml

//For person.hbm.xml
<list name="addresses" inverse="false" table="person_address">
    <key>
        <column name="Person_ID" not-null="true" />
    </key>
    <many-to-many entity-name="domains.Address">
            <column name="listAddress_ID" not-null="true" />
    </many-to-many>
</list>
//For address.hbm.xml
<list name="persons" inverse="false" table="person_address">
        <key>
            <column name="listAddress_ID" not-null="true" />
        </key>
        <many-to-many entity-name="domains.Person">
            <column name="Person_ID" not-null="true" />
        </many-to-many>
</list>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM