程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 精通Hibernate之映射繼承關系四

精通Hibernate之映射繼承關系四

編輯:關於JAVA

這種映射方式只需為繼承關系樹的Employee根類創建一張表EMPLOYEES。如圖14-4所示,在EMPLOYEES表中不僅提供和Employee類的屬性對應的字段,還要提供和它的兩個子類的所有屬型對應的字段,此外,EMPLOYEES表中需要額外加入一個字符串類型的EMPLOYEE_TYPE字段,用於區分Employee的具體類型。

<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="name" type="string" column="NAME" />
<set
name="employees"
inverse="true"
lazy="true" >
<key column="COMPANY_ID" />
<one-to-many class="mypack.Employee" />
</set>
</class>
</hibernate-mapping>

Employee.hbm.xml文件用於把Employee類映射到EMPLOYEES表,在這個映射文件中,除了需要映射Employee類本身的屬性,還需要在元素中映射兩個子類的屬性。例程14-6是Employee.hbm.xml文件的代碼。

例程14-6 Employee.hbm.xml

<hibernate-mapping >
<class name="mypack.Employee" table="EMPLOYEES">
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<discriminator column="EMPLOYEE_TYPE" type="string" />
<property name="name" type="string" column="NAME" />
<many-to-one
name="company"
column="COMPANY_ID"
class="mypack.Company"
/>
<subclass name="mypack.HourlyEmployee" discriminator-value="HE" >
<property name="rate" column="RATE" type="double" />
</subclass>
<subclass name="mypack.SalariedEmployee" discriminator-value="SE" >
<property name="salary" column="SALARY" type="double" />
</subclass>
</class>
</hibernate-mapping>

在Employee.hbm.xml文件中,元素指定EMPLOYEES表中用於區分Employee類型的字段為EMPLOYEE_TYPE,兩個元素用於映射HourlyEmployee類和SalariedEmployee類,元素的discriminator-value屬性指定EMPLOYEE_TYPE字段的取值。EMPLOYEES表中有以下記錄:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved