<?xml version="1.0" encoding="utf-8" ?> 
<sqlMap namespace="Document" >
		<resultMap id="document" class="Document">
			<result property="Id"			column="Document_Id"/>
			<result property="Title"			column="Document_Title"/>
			<discriminator column="Document_Type" type="string"/> 
			<subMap value="Book" resultMapping="book" />
			<subMap value="Newspaper" resultMapping="newspaper" />
		</resultMap>
		
		<resultMap id="document-custom-handler" class="Document">
			<result property="Id"			column="Document_Id"/>
			<result property="Title"		column="Document_Title"/>
			<discriminator column="Document_Type"  typeHandler="CustomInheritance"/> 
			<subMap value="Book" resultMapping="book" />
			<subMap value="Newspaper" resultMapping="newspaper" />
		</resultMap>
		
		<resultMap id="book" class="Book" extends="document">
			<result property="PageNumber"		column="Document_PageNumber"/>
		</resultMap>
		
		<resultMap id="newspaper" class="Newspaper"  extends="document">
			<result property="City"			column="Document_City"/>
		</resultMap>
		
		
		<statement id="GetAllDocument"
			resultMap="document">
			select 
				*
			from Documents 
			order by Document_Type, Document_Id
		</statement>
		
		<select id="GetTypedCollection"
			listClass="DocumentCollection"
			resultMap="document">
			select 
				*
			from Documents 
			order by Document_Type, Document_Id
		</select>		
		
		<select id="GetAllDocumentWithCustomTypeHandler"
			resultMap="document-custom-handler">
			select
				*
			from Documents 
			order by Document_Type, Document_Id
		</select>
		
</sqlMap>