|
From: <fab...@us...> - 2010-09-26 14:26:30
|
Revision: 5223
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5223&view=rev
Author: fabiomaulo
Date: 2010-09-26 14:26:22 +0000 (Sun, 26 Sep 2010)
Log Message:
-----------
Test for NH-2331
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Forum.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/MemberGroup.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Nh2331Test.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Person.cs
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Forum.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Forum.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Forum.cs 2010-09-26 14:26:22 UTC (rev 5223)
@@ -0,0 +1,11 @@
+using System;
+
+namespace NHibernate.Test.NHSpecificTest.NH2331
+{
+ public class Forum
+ {
+ public virtual Guid Id { get; set; }
+ public virtual string Name { get; set; }
+ public virtual double Dollars { get; set; }
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Mappings.hbm.xml 2010-09-26 14:26:22 UTC (rev 5223)
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test"
+ namespace="NHibernate.Test.NHSpecificTest.NH2331" default-access="property"
+ default-lazy="false">
+
+ <class name="NHibernate.Test.NHSpecificTest.NH2331.Forum">
+
+ <id name="Id">
+ <generator class="guid" />
+ </id>
+
+ <property name="Name" type="string" />
+ <property name="Dollars" type="double" />
+
+ </class>
+
+
+ <class name="NHibernate.Test.NHSpecificTest.NH2331.MemberGroup">
+
+ <id name="Id">
+ <generator class="guid" />
+ </id>
+
+ <property name="Name" type="System.String" />
+
+ <bag
+ name="Members"
+ table="Group2Members"
+ >
+ <key>
+ <column name="GroupId" />
+ </key>
+ <many-to-many
+ class="NHibernate.Test.NHSpecificTest.NH2331.Person">
+ <column name="PersonId" />
+ </many-to-many>
+ </bag>
+
+ <bag
+ name="Forums"
+ table="Group2Forums"
+ >
+ <key>
+ <column name="GroupId" />
+ </key>
+ <many-to-many
+ class="NHibernate.Test.NHSpecificTest.NH2331.Forum">
+ <column name="ForumId" />
+ </many-to-many>
+ </bag>
+
+ </class>
+
+
+ <class name="NHibernate.Test.NHSpecificTest.NH2331.Person">
+
+ <id name="Id">
+ <generator class="guid" />
+ </id>
+
+ <property name="Name" type="System.String" />
+
+ </class>
+
+</hibernate-mapping>
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/MemberGroup.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/MemberGroup.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/MemberGroup.cs 2010-09-26 14:26:22 UTC (rev 5223)
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+
+namespace NHibernate.Test.NHSpecificTest.NH2331
+{
+ public class MemberGroup
+ {
+ public virtual Guid Id { get; set; }
+ public virtual string Name { get; set; }
+ public virtual IList<Person> Members { get; set; }
+ public virtual IList<Forum> Forums { get; set; }
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Nh2331Test.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Nh2331Test.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Nh2331Test.cs 2010-09-26 14:26:22 UTC (rev 5223)
@@ -0,0 +1,152 @@
+using System;
+using System.Collections.Generic;
+using NHibernate.Criterion;
+using NHibernate.Transform;
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.NHSpecificTest.NH2331
+{
+ public class Bar
+ {
+ public string Name { get; set; }
+ public double Sum { get; set; }
+ }
+
+ [TestFixture, Ignore("Not fixed yet.")]
+ public class Nh2331Test : BugTestCase
+ {
+ private Guid person0Id;
+ private Guid person1Id;
+
+ protected override void OnSetUp()
+ {
+ base.OnSetUp();
+
+ var person0 = new Person
+ {
+ Name = "Schorsch",
+ };
+
+ var person1 = new Person
+ {
+ Name = "Sepp",
+ };
+
+ var person2 = new Person
+ {
+ Name = "Detlef",
+ };
+
+ var forum0 = new Forum
+ {
+ Name = "Oof",
+ Dollars = 1887.00,
+ };
+
+ var forum1 = new Forum
+ {
+ Name = "Rab",
+ Dollars = 33.00,
+ };
+
+ var forum2 = new Forum
+ {
+ Name = "Main",
+ Dollars = 42.42,
+ };
+
+ var group0 = new MemberGroup
+ {
+ Name = "Gruppe Bla",
+ Members = new List<Person>(),
+ Forums = new List<Forum>(),
+ };
+ group0.Members.Add(person0);
+ group0.Forums.Add(forum0);
+ group0.Forums.Add(forum1);
+
+ var group1 = new MemberGroup
+ {
+ Name = "Gruppe Blub",
+ Members = new List<Person>(),
+ Forums = new List<Forum>(),
+ };
+ group1.Members.Add(person1);
+ group1.Members.Add(person2);
+ group1.Forums.Add(forum2);
+
+ using (ISession session = OpenSession())
+ {
+ person0Id = (Guid) session.Save(person0);
+ person1Id = (Guid) session.Save(person1);
+
+ session.Flush();
+ }
+ }
+
+ protected override void OnTearDown()
+ {
+ base.OnTearDown();
+ using (ISession session = OpenSession())
+ {
+ string hql = "from System.Object";
+ session.Delete(hql);
+ session.Flush();
+ }
+ }
+
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return (true);
+ }
+
+ [Test]
+ public void DetachedCriteriaCorrelatedQueryExplodes()
+ {
+ using (ISession session = OpenSession())
+ {
+ DetachedCriteria memberGroupCriteria
+ = DetachedCriteria
+ .For<MemberGroup>()
+ .CreateAlias("Members", "m")
+ .CreateAlias("Forums", "f")
+ .Add(Restrictions.EqProperty("m.Id", "p.Id"))
+ .SetProjection(Projections.Property("f.Id"))
+ ;
+
+ var ids = new List<Guid>();
+ ids.Add(person0Id);
+ ids.Add(person1Id);
+
+ DetachedCriteria forumCriteria
+ = DetachedCriteria
+ .For<Forum>("fff")
+ .Add(Restrictions.NotEqProperty("Id", "p.Id"))
+ .Add(Subqueries.PropertyIn("Id", memberGroupCriteria))
+ .SetProjection
+ (
+ Projections.Sum("Dollars")
+ )
+ ;
+
+ DetachedCriteria personCriteria
+ = DetachedCriteria
+ .For<Person>("p")
+ .Add(Restrictions.InG("Id", ids))
+ .SetProjection
+ (
+ Projections
+ .ProjectionList()
+ .Add(Projections.Property("Name"), "Name")
+ .Add(Projections.SubQuery(forumCriteria), "Sum")
+ )
+ .SetResultTransformer(Transformers.AliasToBean(typeof (Bar)))
+ ;
+
+ ICriteria criteria = personCriteria.GetExecutableCriteria(session);
+ criteria.Executing(c => c.List()).NotThrows();
+ }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Person.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Person.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2331/Person.cs 2010-09-26 14:26:22 UTC (rev 5223)
@@ -0,0 +1,10 @@
+using System;
+
+namespace NHibernate.Test.NHSpecificTest.NH2331
+{
+ public class Person
+ {
+ public virtual Guid Id { get; set; }
+ public virtual string Name { get; set; }
+ }
+}
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-26 03:53:27 UTC (rev 5222)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-26 14:26:22 UTC (rev 5223)
@@ -511,6 +511,10 @@
<Compile Include="NHSpecificTest\NH2324\CompositeUserType.cs" />
<Compile Include="NHSpecificTest\NH2324\Entity.cs" />
<Compile Include="NHSpecificTest\NH2324\BulkUpdateWithCustomCompositeType.cs" />
+ <Compile Include="NHSpecificTest\NH2331\Forum.cs" />
+ <Compile Include="NHSpecificTest\NH2331\MemberGroup.cs" />
+ <Compile Include="NHSpecificTest\NH2331\Nh2331Test.cs" />
+ <Compile Include="NHSpecificTest\NH2331\Person.cs" />
<Compile Include="NHSpecificTest\NH2344\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2344\Model.cs" />
<Compile Include="TypesTest\CharClass.cs" />
@@ -2308,6 +2312,7 @@
<EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" />
<EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH2331\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2324\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2344\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2112\Mappings.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|