NHibernate-2.1.2.GA && inherited classes

[spoiler ClassStaff.cs]
[code]
using System;
 
namespace TestIII
{
	public class ClassStaff
	{
		int
			_ID;
 
		string
			_Name;
 
		decimal
			_Salary,
			_SalaryAdd;
 
		DateTime
			_BirthDate;
 
		public virtual int ID
		{
			get
			{
				return _ID;
			}
			set
			{
				if (_ID != value)
					_ID = value;
			}
		}
 
		public virtual string Name
		{
			get
			{
				return _Name;
			}
			set
			{
				if (_Name != value)
					_Name = value;
			}
		}
 
		public virtual decimal Salary
		{
			get
			{
				return _Salary;
			}
			set
			{
				if (_Salary != value)
					_Salary = value;
			}
		}
 
		public virtual decimal SalaryAdd
		{
			get
			{
				return _SalaryAdd;
			}
			set
			{
				if (_SalaryAdd != value)
					_SalaryAdd = value;
			}
		}
 
		public virtual DateTime BirthDate
		{
			get
			{
				return _BirthDate;
			}
			set
			{
				if (_BirthDate != value)
					_BirthDate = value;
			}
		}
	}
}
[/code]
[/spoiler]
[spoiler ClassStaff.hbm.xml]
[code]
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" namespace="TestIII" assembly="TestIII">
 
	<class name="ClassStaff" table="Staff" lazy="true">
		<id name="ID">
			<generator class="native" />
		</id>
		<property name="Name" column ="Name"/>
		<property name="Salary" column ="Salary"/>
		<property name="SalaryAdd" formula="(select s.Salary from Staff s where (s.ID=ID))"/>
		<!-- <property name="BirthDate" column ="BirtDate"/> -->
	</class>

</hibernate-mapping>
[/code]
[/spoiler]
То, что BirthDate не map'ится - так трэба.
[spoiler main.cs]
[code]
using System;
using System.Collections.Generic;
using System.Reflection;
using NHibernate;
using NHibernate.Cfg;
 
namespace TestIII
{
	class Program
	{
		static ISessionFactory
			SessionFactory;

		static void Main(string[] args)
		{
			try
			{
				using (ISession session = OpenSession())
				{
					IQuery
						query;

					ClassStaff
						tmpClassStaff=session.Get<ClassStaff>(1);

					query = session.CreateQuery("select s from ClassStaff s where s.ID in (:ID)");
					query.SetParameterList("ID", new object[] { 1, 3, 5 });

					List<ClassStaff>
==>						ClassStaffRecords = (List<ClassStaff>)query.List<ClassStaff>();
 
					foreach (ClassStaff s in ClassStaffRecords)
					{
						;
					}

					/*
					query = session.GetNamedQuery("NamedQuery1");
					query.SetParameter("pID",3);

					List<ClassStaffWithReallyBirthDate>
						ClassStaffWithReallyBirthDateRecords = (List<ClassStaffWithReallyBirthDate>)query.List<ClassStaffWithReallyBirthDate>();

					foreach (ClassStaffWithReallyBirthDate s in ClassStaffWithReallyBirthDateRecords)
					{
						;
					}
					*/
				}
			}
			catch (Exception e)
			{
				Console.WriteLine(e);
			}
		}
 
		static ISession OpenSession()
		{
			if (SessionFactory == null)
			{
				Configuration
					configuration = new Configuration();

				configuration.AddAssembly(Assembly.GetCallingAssembly());
				SessionFactory = configuration.BuildSessionFactory();
			}
 
			return SessionFactory.OpenSession();
		}
	}
}
[/code]
[/spoiler]
Все - сухо.
Добавляем
[spoiler ClassStaffWithReallyBirthDate.cs]
[code]
class ClassStaffWithReallyBirthDate : ClassStaff
{
}
[/code]
[/spoiler]
[spoiler ClassStaffWithReallyBirthDate.hbm.xml]
[code]
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" namespace="TestIII" assembly="TestIII">

	<class name="ClassStaffWithReallyBirthDate">
		<id name="ID">
			<generator class="native" />
		</id>
		<property name="Name" column ="Name"/>
		<property name="Salary" column ="Salary"/>
		<property name="BirthDate" column ="BirthDate"/>
	</class>

	<sql-query name="NamedQuery1">
		<return alias="SmthAlias" class="TestIII.ClassStaffWithReallyBirthDate" />
		<![CDATA[
			select
				s.*,
				cast('20101231' as datetime) as BirthDate
			from
				Staff s
			where
				s.ID=:pID
		]]>
	</sql-query>

</hibernate-mapping>
[/code]
[/spoiler]
И на выше указанной строке падаем с
[quote NHibernate]
select
	classstaff0_.ID as ID1_,
	classstaff0_.Name as Name1_,
	classstaff0_.Salary as Salary1_,
==>	classstaff0_.BirthDate as BirthDate1_
from
==>	ClassStaffWithReallyBirthDate classstaff0_
where
	classstaff0_.ID in (@p0 , @p1 , @p2);
	@p0 = 1, @p1 = 3, @p2 = 5
[/quote]
С какой-такой радости ClassStaffWithReallyBirthDate если ж черным по белому
[code]
List<>>>ClassStaff<<<>
==>	ClassStaffRecords = (List<>>>ClassStaff<<<>)query.List<>>>ClassStaff<<<>();
[/code]
?