hibernate one-to-many與many-to-one的使用
阿新 • • 發佈:2019-01-25
和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
-----------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.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>
<?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