hibernate 多对多关系映射


这里有两个类,Employee和Company,他们是多对多的关系,在数据库中的表分别是 t_employee 和 t_company ,中间表的字段是e_id和c_id,分别以t_employee的主键和t_company的主键作为外键。

package com.hibernate.many2many.entity;

import java.util.HashSet;
import java.util.Set;

public class Employee {
    
    private Integer id;
    
    private String name;
    
    private Set<Company> companies = new HashSet<Company>();//多对多关系

    public Employee() {
        super();
    }

    public Employee(String name, Set<Company> companies) {
        super();
        this.name = name;
        this.companies = companies;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public Set<Company> getCompanies() {
        return companies;
    }

    public void setCompanies(Set<Company> companies) {
        this.companies = companies;
    }

}


package com.hibernate.many2many.entity;

import java.util.HashSet;
import java.util.Set;

public class Company {
    
    private Integer id;
    
    private String name;
    
    private String address;
    
    private Set<Employee> employees = new HashSet<Employee>();//多对多关系

    public Company() {
        super();
    }

    public Company(String name, String address) {
        super();
        this.name = name;
        this.address = address;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getAddress() {
        return address;
    }

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

    public Set<Employee> getEmployees() {
        return employees;
    }

    public void setEmployees(Set<Employee> employees) {
        this.employees = employees;
    }

}


映射文件:

<?xml version="1.0"?>    
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
<hibernate-mapping>

    <class name="com.hibernate.many2many.entity.Employee" table="t_employee"> 
    
        <id name="id">  
            <generator class="native"/>  
        </id>  
        
        <property name="name" type="string"></property>
        
         <!-- 多对多关系,key是中间表的外键, inverse="true"表示由对方维护-->
        <set name="companies" table="t_company" inverse="true">
            <key column="e_id"></key>
            <many-to-many class="com.hibernate.many2many.entity.Company" column="c_id"></many-to-many>
        </set>
     
    </class>
</hibernate-mapping>




<?xml version="1.0"?>    
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
<hibernate-mapping>

    <class name="com.hibernate.many2many.entity.Company" table="t_company"> 
    
        <id name="id">  
            <generator class="native"/>  
        </id>  
        
        <property name="name" type="string"></property>
        <property name="address" type="string"></property>
        
        <!-- 多对多关系,key是中间表的外键 -->
        <set name="employees" table="t_employee" cascade="all">
            <key column="c_id"></key>
            <many-to-many class="com.hibernate.many2many.entity.Employee" column="e_id"></many-to-many>
        </set>
     
    </class>
</hibernate-mapping>



转载于:https://my.oschina.net/ChiLin/blog/513254

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值