1. 程式人生 > >hibernate one-to-many與many-to-one的使用

hibernate one-to-many與many-to-one的使用

和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