|
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.
|