From: <dav...@us...> - 2008-11-29 18:25:26
|
Revision: 3938 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3938&view=rev Author: davybrion Date: 2008-11-29 18:25:20 +0000 (Sat, 29 Nov 2008) Log Message: ----------- applied patch from Jon Stelly for NH-1579 Modified Paths: -------------- branches/2.0.x/nhibernate/src/NHibernate/Persister/Entity/SingleTableEntityPersister.cs branches/2.0.x/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj Added Paths: ----------- branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/ branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Apple.cs branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Cart.cs branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Entity.cs branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Fruit.cs branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Mappings.hbm.xml branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/NH1579Fixture.cs branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Orange.cs Modified: branches/2.0.x/nhibernate/src/NHibernate/Persister/Entity/SingleTableEntityPersister.cs =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate/Persister/Entity/SingleTableEntityPersister.cs 2008-11-29 18:07:21 UTC (rev 3937) +++ branches/2.0.x/nhibernate/src/NHibernate/Persister/Entity/SingleTableEntityPersister.cs 2008-11-29 18:25:20 UTC (rev 3938) @@ -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) Added: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Apple.cs =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Apple.cs (rev 0) +++ branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Apple.cs 2008-11-29 18:25:20 UTC (rev 3938) @@ -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: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Cart.cs =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Cart.cs (rev 0) +++ branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Cart.cs 2008-11-29 18:25:20 UTC (rev 3938) @@ -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: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Entity.cs =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Entity.cs (rev 0) +++ branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Entity.cs 2008-11-29 18:25:20 UTC (rev 3938) @@ -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: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Fruit.cs =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Fruit.cs (rev 0) +++ branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Fruit.cs 2008-11-29 18:25:20 UTC (rev 3938) @@ -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: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Mappings.hbm.xml =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Mappings.hbm.xml (rev 0) +++ branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Mappings.hbm.xml 2008-11-29 18:25:20 UTC (rev 3938) @@ -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: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/NH1579Fixture.cs =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/NH1579Fixture.cs (rev 0) +++ branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/NH1579Fixture.cs 2008-11-29 18:25:20 UTC (rev 3938) @@ -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: branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Orange.cs =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Orange.cs (rev 0) +++ branches/2.0.x/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1579/Orange.cs 2008-11-29 18:25:20 UTC (rev 3938) @@ -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: branches/2.0.x/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj =================================================================== --- branches/2.0.x/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-11-29 18:07:21 UTC (rev 3937) +++ branches/2.0.x/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-11-29 18:25:20 UTC (rev 3938) @@ -1,14 +1,19 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>8.0.50727</ProductVersion> + <ProductVersion>9.0.30729</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{7AEE5B37-C552-4E59-9B6F-88755BCB5070}</ProjectGuid> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>NHibernate.Test</RootNamespace> <AssemblyName>NHibernate.Test</AssemblyName> + <FileUpgradeFlags> + </FileUpgradeFlags> + <OldToolsVersion>2.0</OldToolsVersion> + <UpgradeBackupLocation> + </UpgradeBackupLocation> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -265,6 +270,12 @@ <Compile Include="NHSpecificTest\BasicTimeFixture.cs" /> <Compile Include="NHSpecificTest\BugTestCase.cs" /> <Compile Include="NHSpecificTest\CollectionFixture.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\NH1077\A.cs" /> <Compile Include="NHSpecificTest\NH1077\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1098\FilterParameterOrderFixture.cs" /> @@ -1363,6 +1374,9 @@ <EmbeddedResource Include="NHSpecificTest\NH1508\Mappings.hbm.xml" /> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="NHSpecificTest\NH1579\Mappings.hbm.xml" /> + </ItemGroup> + <ItemGroup> <Folder Include="Properties\" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> @@ -1381,4 +1395,4 @@ if exist "$(ProjectDir)hibernate.cfg.xml" (copy "$(ProjectDir)hibernate.cfg.xml" "hibernate.cfg.xml") copy /y "..\..\..\NHibernate.DomainModel\ABC.hbm.xml" "ABC.hbm.xml"</PostBuildEvent> </PropertyGroup> -</Project> \ No newline at end of file +</Project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |