文章出處
文章列表
一、配置雙向多對多關聯
以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,否則違反約束條件
文章列表
全站熱搜