首页 > 代码库 > hibernate多对多关联

hibernate多对多关联

一、配置双向多对多关联

以Project类(项目)和Emp类(员工)为例:

1、创建Project类,并需要定义集合类型的Emp属性

public class Project {    //编号     private Integer pid;     //名称     private String pname;     //定义集合类型的Emp属性     private Set<Emp> emps=new HashSet<Emp>();     public Integer getPid() {        return pid;    }    public void setPid(Integer pid) {        this.pid = pid;    }    public String getPname() {        return pname;    }    public void setPname(String pname) {        this.pname = pname;    }    public Set<Emp> getEmps() {        return emps;    }    public void setEmps(Set<Emp> emps) {        this.emps = emps;    }

2、同理 创建Emp类,并需要定义集合类型的Project属性

public class Emp {    private  String empname;    private  Integer nid;    private Set<Project> pros=new HashSet<Project>();    public String getEmpname() {        return empname;    }    public void setEmpname(String empname) {        this.empname = empname;    }    public Integer getNid() {        return nid;    }    public void setNid(Integer nid) {        this.nid = nid;    }    public Set<Project> getPros() {        return pros;    }    public void setPros(Set<Project> pros) {        this.pros = pros;    }    }

3、需建立第三张表 关联Project和Emp各自的主键pid、nid

技术分享

 

4、编写Project.hbm.xml和Emp.hbm.xml小配置,并植入<set>元素中的table属性 第三张表ProEmp 以及多对多<many-to-many>标签 class指定类型 

Emp.hbm.xml关键代码如下:

技术分享

Project.hbm.xml关键代码如下:

技术分享

5、大配置hibernate.cfg.xml 需关联小配置

<mapping resource="cn/happy/manytomany/Project.hbm.xml" /><mapping resource="cn/happy/manytomany/Emp.hbm.xml" />

6、测试类 Test

/*     * 多对多 双向     */        @Test    public void addTest(){                //创建员工对象             Emp emp=new Emp();             emp.setEmpname("未知");             //创建工程对象             Project pro=new Project();             pro.setPname("花园");                          //将员工对象添加到工程  反之 同理             pro.getEmps().add(emp);             emp.getPros().add(pro);                          //保存             session.save(pro);             session.save(emp);                                        }

hibernate多对多关联