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