此方法为多个类对应一张表。 通过discriminator在配置文件中设置判断字段。
TBook :
private int pageCount
TDVD :
private String regionCode
TItem :
private String id ;
private String name ;
private String manufacturer ;
sql :
-- 删除表
DROP TABLE TItem ;
-- 创建表
CREATE TABLE TItem
(
id varchar(32) not null primary key ,
-- 通过此字段用于区分保存的是 Book还是 DVD
category varchar(2) not null ,
name varchar(20) not null ,
manufacturer varchar(20) not null ,
regionCode varchar(2) , --DVD中的字段
pageCount int --Book中的字段
) ;
-- 事务提交
commit ;
TItem.hbm.xml:
<class name="TItem" table="TITEM">
<id name="id " column="ID " type="string">
<generator class="assigned" />
</id>
<--定义公共字段-->
<property name="name " column="NAME" type="string" not-null="true" />
<property name="manufacturer " column="MANUFACTURER" type="string" not-null="true" />
<--定义判断字段-->
<discriminator column="category " type="java.lang.String"></discriminator>
<--设置各个子类所对应的category值 -->
<subclass name="TBook" discriminator-value="1" >
<property name="pageCount " column="PAGECOUNT" type="int" />
</subclass>
<subclass name="TDVD" discriminator-value="2" >
<property name="regionCode " column="REGIONCODE" type="string" />
</subclass>
</class>