配置映射結構由三種方式:
1.整個繼承結構使用一張表 <subclass...>
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--
This mapping demonstrates
(1) a table-per-subclass mapping strategy
(2) a simple component mapping
(3) recursive associations withing an inheritance tree
-->
<hibernate-mapping package="demoextends">
<class name="Article" table="t_article" discriminator-value="Article">
<id name="id" >
<generator class="native"> <!--表示自動增長-->
</generator>
</id>
<!--用於鑑別是什麼哪個類的列 鑑別值-->
<discriminator type="string" column="class_"></discriminator>
<property name="title" type="string" />
<property name="content" type="text" length="10000" />
<property name="posttime" type="timestamp" />
<subclass name="Topic" discriminator-value="Topic">
<property name="type"> </property>
</subclass>
<subclass name="Reply" discriminator-value="Reply">
<property name="floor" > </property>
</subclass>
</class>
</hibernate-mapping>
2.每個類對應一張表,抽象類也對應表,每個表中只有當前類的屬性。<joined-subclass....>
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--
This mapping demonstrates
(1) a table-per-subclass mapping strategy
(2) a simple component mapping
(3) recursive associations withing an inheritance tree
-->
<hibernate-mapping package="extends2">
<class name="Article" table="t_article" >
<!--採用每個類對應一張表的方式-->
<id name="id" >
<generator class="native"> <!--表示自動增長-->
</generator>
</id>
<property name="title" type="string" />
<property name="content" type="text" length="10000" />
<property name="posttime" type="timestamp" />
<joined-subclass name="Topic" table="t_topic">
<key column="id"></key>
<property name="type"> </property>
</joined-subclass>
<joined-subclass name="Reply" table="t_reply">
<key column="id"></key>
<property name="floor" > </property>
</joined-subclass>
</class>
</hibernate-mapping>
3.每個具體類對應一張表,抽象類不對應表,每個類中都有全部的信息,包括繼承過來的信息。<union-subclass..>
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--
This mapping demonstrates
(1) a table-per-subclass mapping strategy
(2) a simple component mapping
(3) recursive associations withing an inheritance tree
-->
<hibernate-mapping package="extends3">
<!--採用每個具體類對應一張表的方式,抽象類不對應表。
abstract默認爲false,設爲true,表示不對應表。
會忽略table屬性
-->
<class name="Article" abstract="true">
<id name="id" >
<!--採用每個具體類對應一張表的方式,不能設置主鍵生成側率爲native
因爲在整個繼承結構中,主鍵值是不能重複的。
-->
<generator class="hilo">
<param name="table">hi_value</param>
<param name="column">next_value</param>
<param name="max_lo">100</param>
</generator>
</id>
<property name="title" type="string" />
<property name="content" type="text" length="10000" />
<property name="posttime" type="timestamp" />
<union-subclass name="Topic" table="t_topic3">
<property name="type"> </property>
</union-subclass>
<union-subclass name="Reply" table="t_reply3">
<property name="floor" > </property>
</union-subclass>
</class>
</hibernate-mapping>