From: <fab...@us...> - 2011-01-22 14:50:36
|
Revision: 5365 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5365&view=rev Author: fabiomaulo Date: 2011-01-22 14:50:28 +0000 (Sat, 22 Jan 2011) Log Message: ----------- Fix NH-2473 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Mappings.hbm.xml Modified: trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs 2011-01-22 13:50:30 UTC (rev 5364) +++ trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs 2011-01-22 14:50:28 UTC (rev 5365) @@ -3898,29 +3898,19 @@ { return this; } - else + // TODO : really need a way to do something like : + // getTuplizer(entityMode).determineConcreteSubclassEntityName(instance) + var clazz = instance.GetType(); + if (clazz == GetMappedClass(entityMode)) { - // TODO : really need a way to do something like : - // getTuplizer(entityMode).determineConcreteSubclassEntityName(instance) - System.Type clazz = instance.GetType(); - if (clazz == GetMappedClass(entityMode)) - { - return this; - } - else - { - string subclassEntityName = GetSubclassEntityName(clazz); - if (subclassEntityName == null) - { - throw new HibernateException("instance not of expected entity type: " + clazz.FullName + " is not a: " - + EntityName); - } - else - { - return factory.GetEntityPersister(subclassEntityName); - } - } + return this; } + var subclassEntityName = GetSubclassEntityName(clazz); + if (subclassEntityName == null || EntityName.Equals(subclassEntityName)) + { + return this; + } + return factory.GetEntityPersister(subclassEntityName); } public virtual EntityMode? GuessEntityMode(object obj) Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Fixture.cs 2011-01-22 14:50:28 UTC (rev 5365) @@ -0,0 +1,48 @@ + +using System.Collections; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.EntityNameAndInheritance +{ + public class Fixture : BugTestCase + { + private int id; + private const string entityName = "SuperClass"; + + protected override void OnSetUp() + { + using (var s = OpenSession()) + { + using (var tx = s.BeginTransaction()) + { + id = (int)s.Save(entityName, new Hashtable()); + tx.Commit(); + } + } + } + + [Test] + public void DoesNotCrash() + { + using (var s = OpenSession()) + { + using (s.BeginTransaction()) + { + Assert.IsNotNull(s.Get(entityName, id)); + } + } + } + + protected override void OnTearDown() + { + using (var s = OpenSession()) + { + using (var tx = s.BeginTransaction()) + { + s.CreateSQLQuery("delete from " + entityName).ExecuteUpdate(); + tx.Commit(); + } + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/EntityNameAndInheritance/Mappings.hbm.xml 2011-01-22 14:50:28 UTC (rev 5365) @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.EntityNameAndCompositeId" + assembly="NHibernate.Test"> + <class entity-name="SuperClass"> + <id name="Id" type="int"> + <generator class="native"/> + </id> + <discriminator column="DISC" type="string" /> + <subclass entity-name="Subclass" discriminator-value="B" /> + </class> +</hibernate-mapping> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-01-22 13:50:30 UTC (rev 5364) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-01-22 14:50:28 UTC (rev 5365) @@ -473,6 +473,7 @@ <Compile Include="NHSpecificTest\BagWithLazyExtraAndFilter\Domain.cs" /> <Compile Include="NHSpecificTest\BagWithLazyExtraAndFilter\Fixture.cs" /> <Compile Include="NHSpecificTest\EntityNameAndCompositeId\Fixture.cs" /> + <Compile Include="NHSpecificTest\EntityNameAndInheritance\Fixture.cs" /> <Compile Include="NHSpecificTest\EntityNameWithFullName\Fixture.cs" /> <Compile Include="NHSpecificTest\Futures\LinqFutureFixture.cs" /> <Compile Include="NHSpecificTest\NH1136\Address.cs" /> @@ -2399,6 +2400,7 @@ <EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\EntityNameAndInheritance\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2467\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2459\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2412\Mappings.hbm.xml" /> @@ -2777,7 +2779,6 @@ <EmbeddedResource Include="DynamicEntity\Tuplizer\Customer.hbm.xml" /> </ItemGroup> <ItemGroup> - <Folder Include="Cascade\Circle" /> <Folder Include="Properties\" /> </ItemGroup> <ItemGroup> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |