文章出處

一、配置雙向多對多關聯

以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);
             
             
          
    }

注:對于雙向多對多關聯,需要將其中一端inverse屬性設為True,否則違反約束條件

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()