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