配置繼承結構

配置映射結構由三種方式:

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>


發佈了238 篇原創文章 · 獲贊 20 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章