hibernatea实现一对多关联映射关系

来源:互联网 发布:地坪找平层算法 编辑:程序博客网 时间:2024/06/08 10:37

         我们以员工表和部门表为例,多个员工对应一个部门,属于一对多的关系,我们要在多的一端加入外键,所以我们在多的一端的封装类里加入一的一端的属性。

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;}@Overridepublic 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>