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