Hibernate双向多对多关联

Posted deicideRaven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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双向多对多关联的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate映射多对多双向关联关系(小案例)

Hibernate,关系映射的多对一单向关联多对一双向关联一对一主键关联一对一外键关联多对多关系关联

Hibernate5-双向关联-多对多(n:n)

hibernate多对多

Hibernate—— 一对多 和 多对多关联关系映射(xml和注解)总结(转载)

一口一口吃掉Hibernate——多对多关联映射