首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate学习三

2012-11-01 
hibernate学习3继承映射父类Product(int id, String name)子类一Book(int pageCount)子类二Clothes(int si

hibernate学习3
继承映射
父类Product(int id, String name)
子类一Book(int pageCount)
子类二Clothes(int size)

第一种方法
创建两个表,同普通映射一样
Book (id,name,pageCount)
Clothes(id,name,size)

第二种,每个子类对应一张子表,并与主类共享主表,子表与主表通过外键关联
Product(id,name)
Book(id,pageCount) foreignkey ("id") reference Product("di")
Clothes(id,size) foreignkey ("id") reference Product("di")
映射文件只映射父类
<class name="com.limf.bean.Product" table="Product">
      <id name="id">
         <generator column="name" type="String"/>


      <joined-subclass name="com.limf.bean.Book" table="Book">
          <key column="id"/>    <!--key为外键-->
          <property name="pageCount"/>
      </joined-subclass>

      <joined-subclass name="com.limf.bean.Book" table="Book">
          <key column="id"/>
          <property name="size"/>
      </joined-subclass>

</class>

session.save(new Book())会分别向product表和book表各自插入一条数据


第三种,一个表对应多个类
只有一个Product表,包含所有字段,外加一个类型字段区分
Product(id,name,pageCount,size,category)
映射文件写法:
<class name="com.limf.bean.Product" table="Product">
      <id name="id">
         <generator type="String"/>    
      <property name="name" column="name" type="String"/>

      <!--区分的值为1-->
      <subclass name="com.limf.bean.Book" discriminator-value="1">
         <property name="pageCount" column="pageCount"/>
      </subclass>

      <subclass name="com.limf.bean.Clothes" discriminator-value="2">
         <property name="size" column="size"/>
      </subclass>

</class>

热点排行