我们以员工表和部门表为例,多个员工对应一个部门,属于一对多的关系,我们要在多的一端加入外键,所以我们在多的一端的封装类里加入一的一端的属性。
emp.java
public class Emp {
private int empid;
private String empname;
private Dept dept;//在多的一端加入1的一端的属性
public int getEmpid() {
return empid;
}
public void setEmpid(int empid) {
this.empid = empid;
}
public String getEmpname() {
return empname;
}
public void setEmpname(String empname) {
this.empname = empname;
}
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
@Override
public String toString() {
return "Emp [empid=" + empid + ", empname=" + empname + ", dept="
+ dept + "]";
}
}
dept.java
package vo;
import java.util.HashSet;
import java.util.Set;
public class Dept {
private int deptid;
private String deptname;
private Set<Emp> emps=new HashSet<Emp>();//双向一对多
public int getDeptid() {
return deptid;
}
public void setDeptid(int deptid) {
this.deptid = deptid;
}
public String getDeptname() {
return deptname;
}
public void setDeptname(String deptname) {
this.deptname = deptname;
}
public Set<Emp> getEmps() {
return emps;
}
public void setEmps(Set<Emp> emps) {
this.emps = emps;
}
}
emp.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="vo">
<class name="Emp">
<id name="empid">
<generator class="native"></generator>
</id>
<property name="empname"></property>
<many-to-one name="dept" column="deptid" class="Dept"></many-to-one>
<!--在多的一端加入many-to-one标签 -->
</class>
</hibernate-mapping>
dept.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="vo">
<class name="Dept">
<id name="deptid">
<generator class="native"></generator>
</id>
<property name="deptname"></property>
<!--双向一对多需要在一的一端加入set -->
<set name="emps" >
<key column="deptid"></key>
<one-to-many class="Emp"/>
</set>
</class>
</hibernate-mapping>