From: <dav...@us...> - 2008-11-29 18:07:26
|
Revision: 3937 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3937&view=rev Author: davybrion Date: 2008-11-29 18:07:21 +0000 (Sat, 29 Nov 2008) Log Message: ----------- applied patch from Jon Stelly for NH-1579 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Persister/Entity/SingleTableEntityPersister.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Apple.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Cart.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Entity.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Fruit.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/NH1579Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Orange.cs Modified: trunk/nhibernate/src/NHibernate/Persister/Entity/SingleTableEntityPersister.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Persister/Entity/SingleTableEntityPersister.cs 2008-11-27 20:12:33 UTC (rev 3936) +++ trunk/nhibernate/src/NHibernate/Persister/Entity/SingleTableEntityPersister.cs 2008-11-29 18:07:21 UTC (rev 3937) @@ -522,7 +522,8 @@ public override string OneToManyFilterFragment(string alias) { - return forceDiscriminator ? DiscriminatorFilterFragment(alias) : string.Empty; + //Previous code was checking forceDiscriminator value here, which caused issues with collection loading. + return DiscriminatorFilterFragment(alias); } private string DiscriminatorFilterFragment(string alias) Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579 ___________________________________________________________________ Added: bugtraq:url + http://jira.nhibernate.org/browse/%BUGID% Added: bugtraq:logregex + NH-\d+ Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Apple.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Apple.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Apple.cs 2008-11-29 18:07:21 UTC (rev 3937) @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1579 +{ + public class Apple : Fruit + { + public Apple(Entity container) + : base(container) + { + } + + protected Apple() + { + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Cart.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Cart.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Cart.cs 2008-11-29 18:07:21 UTC (rev 3937) @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1579 +{ + public class Cart : Entity + { + public Cart(string vendorName) + { + if (String.IsNullOrEmpty(vendorName)) + throw new ArgumentNullException("vendorName"); + + VendorName = vendorName; + EnsureCollections(); + } + + private void EnsureCollections() + { + if(Apples == null) + Apples = new List<Apple>(); + if(Oranges == null) + Oranges = new List<Orange>(); + } + + protected Cart() + { + } + + public string VendorName { get; set; } + public IList<Apple> Apples { get; set; } + public IList<Orange> Oranges { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Entity.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Entity.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Entity.cs 2008-11-29 18:07:21 UTC (rev 3937) @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1579 +{ + public abstract class Entity + { + public Entity() + { + } + + public Guid ID { get; private set; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Fruit.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Fruit.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Fruit.cs 2008-11-29 18:07:21 UTC (rev 3937) @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1579 +{ + public abstract class Fruit : Entity + { + public Fruit(Entity container) + { + if (container == null) + throw new ArgumentNullException("container"); + Container = container; + } + + protected Fruit() + { + } + + public Entity Container { get; private set; } + + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Mappings.hbm.xml 2008-11-29 18:07:21 UTC (rev 3937) @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="NHibernate.Test.NHSpecificTest.NH1579" assembly="NHibernate.Test" default-lazy="false"> + <class name="Entity" abstract="true" table="Entities"> + <id name="ID"> + <generator class="guid.comb" /> + </id> + <discriminator column="EntityType" length="64"/> + </class> + + <subclass name="Fruit" abstract="true" discriminator-value="Fruit" extends="NHibernate.Test.NHSpecificTest.NH1579.Entity, NHibernate.Test"> + <many-to-one name="Container" column="ContainerID" /> + </subclass> + <subclass name="Apple" discriminator-value="Apple" extends="NHibernate.Test.NHSpecificTest.NH1579.Fruit, NHibernate.Test"/> + <subclass name="Orange" discriminator-value="Orange" extends="NHibernate.Test.NHSpecificTest.NH1579.Fruit, NHibernate.Test"/> + + <subclass name="Cart" discriminator-value="Cart" extends="NHibernate.Test.NHSpecificTest.NH1579.Entity, NHibernate.Test"> + <property name="VendorName" length="128"/> + <bag name="Apples" cascade="all-delete-orphan" inverse="true"> + <key column="ContainerID"/> + <one-to-many class="NHibernate.Test.NHSpecificTest.NH1579.Apple, NHibernate.Test"/> + </bag> + <bag name="Oranges" cascade="all-delete-orphan" inverse="true"> + <key column="ContainerID"/> + <one-to-many class="NHibernate.Test.NHSpecificTest.NH1579.Orange, NHibernate.Test"/> + </bag> + </subclass> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/NH1579Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/NH1579Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/NH1579Fixture.cs 2008-11-29 18:07:21 UTC (rev 3937) @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1579 +{ + [TestFixture] + public class NH1579Fixture : BugTestCase + { + [Test] + public void Test() + { + Cart cart = new Cart("Fred"); + Apple apple = new Apple(cart); + Orange orange = new Orange(cart); + cart.Apples.Add(apple); + cart.Oranges.Add(orange); + + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + session.Save(cart); + tx.Commit(); + } + } + + using (ISession session = OpenSession()) + { + IQuery query = session.CreateQuery("FROM Fruit f WHERE f.Container.id = :containerID"); + query.SetGuid("containerID", cart.ID); + IList<Fruit> fruit = query.List<Fruit>(); + Assert.AreEqual(2, fruit.Count); + } + + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + session.Delete("FROM Entity"); + tx.Commit(); + } + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Orange.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Orange.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Orange.cs 2008-11-29 18:07:21 UTC (rev 3937) @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1579 +{ + public class Orange : Fruit + { + public Orange(Entity container) + : base(container) + { + } + + protected Orange() + { + } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-27 20:12:33 UTC (rev 3936) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-29 18:07:21 UTC (rev 3937) @@ -524,6 +524,12 @@ <Compile Include="NHSpecificTest\NH1556\Patient.cs" /> <Compile Include="NHSpecificTest\NH1556\Product.cs" /> <Compile Include="NHSpecificTest\NH1556\ProductIdentifier.cs" /> + <Compile Include="NHSpecificTest\NH1579\Apple.cs" /> + <Compile Include="NHSpecificTest\NH1579\Cart.cs" /> + <Compile Include="NHSpecificTest\NH1579\Entity.cs" /> + <Compile Include="NHSpecificTest\NH1579\Fruit.cs" /> + <Compile Include="NHSpecificTest\NH1579\NH1579Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1579\Orange.cs" /> <Compile Include="NHSpecificTest\NH1587\A.cs" /> <Compile Include="NHSpecificTest\NH1587\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Fixture.cs" /> @@ -1546,6 +1552,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1579\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH298\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1587\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1556\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |