深入淺出Hibernate之Discriminator的使用

電子商務系統中,設計商品數據表時,可能會通過多餘字段將各種商品放置到同一個大的數據表中,此時,如何在查詢時,辨別不同的商品呢?
 
Hibernate中,使用了Discriminator(辨別標誌)來解決這個問題。
 
數據庫ddl:
 
    create table `sample`.`t_item`(
        `id` int not null auto_increment,
       `category` varchar(10),
       `name` varchar(50),
       `manufacturer` varchar(50),
       `regioncode` varchar(30), //區域代碼,用於DVD商品
       `pagecount` int,      //頁數,用於Book商品  
        primary key (`id`)
    );
 
對應的TItem.hbm.xml:
 
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<!--
    Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
    <class name="org.hibernatetest.bean.TItem" table="t_item">
   
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
       
        <discriminator
           column = "category"           //這裏使用category字段辨別不同商品
           type = "java.lang.String"  
        />
       
       
        <property name="name" type="java.lang.String">
            <column name="name" length="50" />
        </property>
       
        <property name="manufacturer" type="java.lang.String">
            <column name="manufacturer" length="50" />
        </property>
       
       
        <subclass
           name = "org.hibernatetest.bean.TDVD"
           discriminator-value = "2">
           <property
             name = "regionCode"
             column = "regioncode"
           />
        </subclass>
       
       
        <subclass
           name = "org.hibernatetest.bean.TBook"
           discriminator-value = "1">
           <property
     
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章