Hibernate双向多对多关联

时间:2021-04-29 13:38:10

一、配置双向多对多关联

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

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

Hibernate双向多对多关联
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;
}
Hibernate双向多对多关联

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

Hibernate双向多对多关联
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;
} }
Hibernate双向多对多关联

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

Hibernate双向多对多关联

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

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

Hibernate双向多对多关联

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

Hibernate双向多对多关联

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

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

6、测试类 Test

Hibernate双向多对多关联
/*
* 多对多 双向
*/ @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双向多对多关联

注:对于双向多对多关联,需要将其中一端inverse属性设为True,否则违反约束条件