hibernate關聯映射 多對一

多對一的映射:

 1: 在多的類中寫加入一的類作爲屬性

 2:depart一的一方不寫其他屬性只寫自己的屬性 自己的映射文件也是隻寫自己的映射

 3:emp多的一方映射文件加入<many-to-one name="depart" column="depart_id"/>

       column="depart_id"不寫的話就默認字段爲depart

代碼如下:

Department類一的一方

package Entitys;

public class Department {
 private int id;
 private String name;
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }

}

映射文件:

<?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 package="Entitys">
 <class name="Department">
  <id name="id">
   <generator class="native"/>
  </id>
  <property name="name"/>
 </class>
</hibernate-mapping>

 

Employee多的一方

package Entitys;

public class Employee {
 private int id;
 private String name;
 private Department depart;
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Department getDepart() {
  return depart;
 }
 public void setDepart(Department depart) {
  this.depart = depart;
 }

}

映射文件:

<?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 package="Entitys">
 <class name="Employee">
  <id name="id">
   <generator class="native"/>
  </id>
  <property name="name"/>
  <many-to-one name="depart" column="depart_id"/>
 </class>
</hibernate-mapping>

 

/*
    * 在對應的方法中,初始化代理就可以在查詢完返回對象後可以
    * 在在取得關聯對象的信息,不必只在session中
    */

   Hibernate.initialize(emp.getDepart());//是對應的屬性的類

 

如果有<many-to-one name="depart" column="depart_id" not-null="true"/>

那麼在必須有depart這個屬性,並且在session中保存數據時s.save(depart)必須在s.save(emp)中要確保在emp有depart字段

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章