快速业务通道

精通Hibernate之映射继承关系六 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

精通Hibernate之映射继承关系六

时间:2011-08-09

在这种映射方式下,继承关系树的每个类以及接口都对应一个表。在本例中,需要创建EMPLOYEES、HE和SE表。

如图14-6所示,EMPLOYEES表仅包含和Employee类的属性对应的字段,HE表仅包含和HourlyEmployee类的属性对应的字段,SE表仅包含和SalariedEmployee类的属性对应的字段。此外,HE表和SE表都以EMPLOYEE_ID字段作为主键,该字段还同时作为外键参照EMPLOYEES表。

<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-8是Employee.hbm.xml文件的代码。

例程14-8 Employee.hbm.xml

<hibernate-mapping > <class name="mypack.Employee" table="EMPLOYEES"> <id name="id" type="long" column="ID"> <generator class="increment"/> </id> <property name="name" type="string" column="NAME" /> <many-to-one name="company" column="COMPANY_ID" class="mypack.Company" /> <joined-subclass name="mypack.HourlyEmployee" table="HOURLY_EMPLOYEES" > <key column="EMPLOYEE_ID" /> <property name="rate" column="RATE" type="double" /> </joined-subclass> <joined-subclass name="mypack.SalariedEmployee" table="SALARIED_EMPLOYEES" > <key column="EMPLOYEE_ID" /> <property name="salary" column="SALARY" type="double" /> </joined-subclass> </class> </hibernate-mapping>

精通Hibernate之映射继承关系六(2)

时间:2011-08-09

在Employee.hbm.xml文件中,两个元素用于映射HourlyEmployee类和SalariedEmployee类,元素的子元素指定HE表和SE表中既作为主键又作为外键的EMPLOYEE_ID字段。

由于HourlyEmployee类和SalariedEmployee类没有单独的映射文件,因此在初始化Hibernate时,只需向Configuration对象中加入Company类和Employee类:

Configuration config = new Configuration(); config.addClass(Company.class) .addClass(Employee.class);

也可以在单独的映射文件中配置或元素,但此时必须显式设定它们的extends属性。例如可以在单独的HourlyEmployee.hbm.xml文件中映射HourlyEmployee类:

<hibernate-mapping > <joined-subclass name="mypack.HourlyEmployee" table="HOURLY_EMPLOYEES" extends="mypack.Employee" > …… </joined-class> <hibernate-mapping >

由于HourlyEmployee类的映射代码不位于Employee.hbm.xml文件中,因此在初始化Hibernate时,不仅需要向Configuration

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号