| |
技术文档>>JAVA>>新手入门>>基础入门>查看文档 |
|
| |
精通hibernate之映射继承关系四(图) |
|
| |
文章作者:未知 文章来源:水木森林 |
|
| |
查看:73次 录入:管理员--2007-11-17 |
|
| |
这种映射方式只需为继承关系树的employee根类创建一张表employees。如图14-4所示,在employees表中不仅提供和employee类的属性对应的字段,还要提供和它的两个子类的所有属型对应的字段,此外,employees表中需要额外加入一个字符串类型的employee_type字段,用于区分employee的具体类型。  图14-4 继承关系树的根类对应一个表 company类和employee类有相应的映射文件,而hourlyemployee类和salariedemployee类没有相应的映射文件。图14-5显示了持久化类、映射文件和数据库表之间的对应关系。  图14-5 持久化类、映射文件和数据库表之间的对应关系 14.2.1 创建映射文件 从company类到employee类是多态关联,由于关系数据模型描述了employee类和它的两个子类的继承关系,因此可以映射company类的employees集合。例程14-5是company.hbm.xml文件的代码,该文件不仅映射了company类的id和name属性,还映射了它的employees集合。 例程14-5 company.hbm.xml <hibernate-mapping > <class name="mypack.company" table="companies" > <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表中有以下记录:
|
|
|
|
相关文档
|