深入浅出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
     
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值