From: <fab...@us...> - 2009-11-20 20:14:05
|
Revision: 4847 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4847&view=rev Author: fabiomaulo Date: 2009-11-20 20:13:57 +0000 (Fri, 20 Nov 2009) Log Message: ----------- Merge r4846 (fix NH-2011) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2011/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2011/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2011/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2011/Model.cs Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-11-20 20:00:56 UTC (rev 4846) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2009-11-20 20:13:57 UTC (rev 4847) @@ -1125,8 +1125,10 @@ ? new object[subtypes.Length] : componentType.GetPropertyValues(original[i], session); object[] targetComponentValues = componentType.GetPropertyValues(target[i], session); - ReplaceAssociations(origComponentValues, targetComponentValues, subtypes, session, null, copyCache, + object[] componentCopy = ReplaceAssociations(origComponentValues, targetComponentValues, subtypes, session, null, copyCache, foreignKeyDirection); + if (!componentType.IsAnyType) + componentType.SetPropertyValues(target[i], componentCopy, session.EntityMode); copied[i] = target[i]; } else if (!types[i].IsAssociationType) Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2011/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2011/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2011/Fixture.cs 2009-11-20 20:13:57 UTC (rev 4847) @@ -0,0 +1,53 @@ +using System.Collections.Generic; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH2011 +{ + [TestFixture] + public class Fixture : BugTestCase + { + [Test] + public void Test() + { + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + session.Save(new Country {CountryCode = "SE"}); + tx.Commit(); + } + } + + var newOrder = new Order(); + newOrder.GroupComponent = new GroupComponent(); + newOrder.GroupComponent.Countries = new List<Country>(); + newOrder.GroupComponent.Countries.Add(new Country {CountryCode = "SE"}); + + Order mergedCopy; + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + mergedCopy = (Order) session.Merge(newOrder); + tx.Commit(); + } + } + + using (ISession session = OpenSession()) + { + var order = session.Get<Order>(mergedCopy.Id); + Assert.That(order.GroupComponent.Countries.Count, Is.EqualTo(1)); + } + + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + session.Delete("from Order"); + session.Delete("from Country"); + tx.Commit(); + } + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2011/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2011/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2011/Mappings.hbm.xml 2009-11-20 20:13:57 UTC (rev 4847) @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH2011"> + + <class name="Order" table="Orders"> + + <id name="Id"> + <generator class="guid.comb"/> + </id> + + <component name="GroupComponent"> + + <bag name="Countries" table="OrderCountries" cascade="none"> + <key column="OrderId" /> + <many-to-many column="CountryCode" class="Country" /> + </bag> + + </component> + + </class> + + <class name="Country" table="Countries"> + + <id name="CountryCode" unsaved-value="null"> + <generator class="assigned"/> + </id> + + </class> + +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2011/Model.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2011/Model.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2011/Model.cs 2009-11-20 20:13:57 UTC (rev 4847) @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH2011 +{ + public class Order + { + public virtual Guid Id { get; set; } + + public virtual GroupComponent GroupComponent { get; set; } + } + + public class GroupComponent + { + public virtual IList<Country> Countries { get; set; } + } + + public class Country + { + public virtual string CountryCode { get; set; } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-11-20 20:00:56 UTC (rev 4846) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-11-20 20:13:57 UTC (rev 4847) @@ -665,6 +665,8 @@ <Compile Include="NHSpecificTest\NH2000\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH2003\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2003\Model.cs" /> + <Compile Include="NHSpecificTest\NH2011\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH2011\Model.cs" /> <Compile Include="NHSpecificTest\NH473\Child.cs" /> <Compile Include="NHSpecificTest\NH473\Fixture.cs" /> <Compile Include="NHSpecificTest\NH473\Parent.cs" /> @@ -2078,6 +2080,7 @@ <EmbeddedResource Include="CfgTest\Loquacious\EntityToCache.hbm.xml" /> <EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH2011\Mappings.hbm.xml" /> <EmbeddedResource Include="Linq\Mappings\Animal.hbm.xml" /> <EmbeddedResource Include="Linq\Mappings\AnotherEntity.hbm.xml" /> <EmbeddedResource Include="Linq\Mappings\Role.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |