和one to one 一样,首先写了两个实体类Department(private int deptid;private String dname;private String location;
private Set<Employee> employees;)和Employee(private int empid;private String ename;private Department dept;)生成get,set方法,
然后同样配置实体类的映射文件Department.hbm.xml和Employee.hbm.xml。
代码:
----------Department.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="cn.hdu.entity.Department" table="DEPARTMENT">
<id name="deptid" column="DEPTID">
<generator class="sequence"><param name="sequence">dept_sequence</param></generator>
</id>
<property name="dname" column="DNAME"></property>
<property name="location" column="LOCATION"></property>
<set name="employees" cascade="save-update" lazy="false">
<key column="DEPTID"></key>
<one-to-many class="cn.hdu.entity.Employee"/>
</set>
</class>
</hibernate-mapping>
-----------Employee.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="cn.hdu.entity.Employee" table="EMPLOYEE">
<id name="empid" column="EMPID">
<generator class="sequence"><param name="sequence">emp_sequence</param></generator>
</id>
<property name="ename" column="ENAME"></property>
<many-to-one name="dept" column="DEPTID" class="cn.hdu.entity.Department" lazy="false"></many-to-one>
</class>
</hibernate-mapping>
注意:属性的解释大多同于 one to one例子(详见Hibernate one to one配置),这里面说下为什么要用set:set代表把整个employees对象装入其中,
之后many to one对应于Department dept.deptid,或者说对应于表Department中DEPTID字段,而one to many代表表Department中DEPTID字段对应于相应的表emplooy一条或者多条记录
做完映射之后同样不要忘记把映射文件写入hibernate.cfg.xml