From: <fab...@us...> - 2009-06-04 14:15:01
|
Revision: 4408 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4408&view=rev Author: fabiomaulo Date: 2009-06-04 13:52:53 +0000 (Thu, 04 Jun 2009) Log Message: ----------- NH-1507 fixed by new QueryTranslator Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Employee.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Order.cs Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Employee.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Employee.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Employee.cs 2009-06-04 13:52:53 UTC (rev 4408) @@ -0,0 +1,66 @@ +using System; +using System.Collections; + +namespace NHibernate.Test.NHSpecificTest.NH1507 +{ + [Serializable] + public class Employee + { + private int _id; + private IList nativeOrders; + + public virtual string LastName { get; set; } + + public virtual string FirstName { get; set; } + + public virtual string Title { get; set; } + + public virtual string TitleOfCourtesy { get; set; } + + public virtual DateTime? BirthDate { get; set; } + + public virtual DateTime? HireDate { get; set; } + + public virtual string Address { get; set; } + + public virtual string City { get; set; } + + public virtual string Region { get; set; } + + public virtual string PostalCode { get; set; } + + public virtual string Country { get; set; } + + public virtual string HomePhone { get; set; } + + public virtual string Extension { get; set; } + + public virtual byte[] Photo { get; set; } + + public virtual string Notes { get; set; } + + public virtual int? ReportsTo { get; set; } + + public virtual string PhotoPath { get; set; } + + protected virtual IList orders + { + get + { + if (nativeOrders == null) + { + nativeOrders = new ArrayList(); + } + + return nativeOrders; + } + set + { + if (value != nativeOrders) + { + nativeOrders = value; + } + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Fixture.cs 2009-06-04 13:52:53 UTC (rev 4408) @@ -0,0 +1,112 @@ +using System; +using System.Collections; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1507 +{ + [TestFixture] + public class Fixture : BugTestCase + { + protected override void OnSetUp() + { + CreateData(); + } + protected override void OnTearDown() + { + CleanupData(); + } + private void CreateData() + { + //Employee + var emp = new Employee + { + Address = "Zombie street", + City = "Bitonto", + PostalCode = "66666", + FirstName = "tomb", + LastName = "mutilated" + }; + + //and his related orders + var order = new Order + {OrderDate = DateTime.Now, Employee = emp, ShipAddress = "dead zone 1", ShipCountry = "Deadville"}; + + var order2 = new Order + {OrderDate = DateTime.Now, Employee = emp, ShipAddress = "dead zone 2", ShipCountry = "Deadville"}; + + //Employee with no related orders but with same PostalCode + var emp2 = new Employee + { + Address = "Gut street", + City = "Mariotto", + Country = "Arised", + PostalCode = "66666", + FirstName = "carcass", + LastName = "purulent" + }; + + //Order with no related employee but with same ShipCountry + var order3 = new Order {OrderDate = DateTime.Now, ShipAddress = "dead zone 2", ShipCountry = "Deadville"}; + + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + session.Save(emp); + session.Save(emp2); + session.Save(order); + session.Save(order2); + session.Save(order3); + + tx.Commit(); + } + } + } + + private void CleanupData() + { + using (ISession session = OpenSession()) + { + using (ITransaction tx = session.BeginTransaction()) + { + //delete empolyee and related orders + session.Delete("from Employee ee where ee.PostalCode = '66666'"); + + //delete order not related to employee + session.Delete("from Order oo where oo.ShipCountry = 'Deadville'"); + + tx.Commit(); + } + } + } + + [Test] + public void ExplicitJoin() + { + using (ISession session = OpenSession()) + { + //explicit join + IList results = + session.CreateQuery("select count(*) from Order as entity join entity.Employee ee " + + "where ee.PostalCode='66666' or entity.ShipCountry='Deadville'").List(); + + //Debug.Assert(list[0].Equals(191), "Wrong number of orders, returned: " + list[0].ToString()); + Assert.AreEqual(2, results[0]); + } + } + + [Test] + public void ImplicitJoinFailingTest() + { + using (ISession session = OpenSession()) + { + //implicit join + IList results = + session.CreateQuery("select count(*) from Order as entity " + + "where entity.Employee.PostalCode='66666' or entity.ShipCountry='Deadville'").List(); + + Assert.AreEqual(2, results[0]); + } + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Mappings.hbm.xml 2009-06-04 13:52:53 UTC (rev 4408) @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1507"> + + <class name="Employee"> + <id column="EmployeeId" name="Id" access="field.camelcase-underscore"> + <generator class="identity" /> + </id> + <property name="LastName" length="20" not-null="true" /> + <property name="FirstName" length="10" not-null="true" /> + <property name="Title" length="30" /> + <property name="TitleOfCourtesy" length="25"/> + <property name="BirthDate"/> + <property name="HireDate"/> + <property name="Address" length="60"/> + <property name="City" length="15"/> + <property name="Region" length="15"/> + <property name="PostalCode" length="10"/> + <property name="Country" length="15"/> + <property name="HomePhone" length="24"/> + <property name="Extension" length="4"/> + <property name="Photo" type="BinaryBlob"/> + <property name="Notes" /> + <property name="ReportsTo"/> + <property name="PhotoPath" length="255"/> + <bag name="orders" inverse="true" cascade="all"> + <key column="EmployeeId" /> + <one-to-many class="Order" /> + </bag> + </class> + + <class name="Order" table="Orders"> + <id column="OrderID" name="Id" access="field.camelcase-underscore"> + <generator class="identity" /> + </id> + <many-to-one name="Employee" lazy="false" column="EmployeeId"/> + <property name="CustomerId"/> + <property name="OrderDate"/> + <property name="RequiredDate"/> + <property name="ShippedDate"/> + <property name="ShipVia"/> + <property name="Freight"/> + <property name="ShipName" length="40" /> + <property name="ShipAddress" length="60" /> + <property name="ShipCity" length="15" /> + <property name="ShipRegion" length="15" /> + <property name="ShipPostalCode" length="10" /> + <property name="ShipCountry" length="15" /> + </class> +</hibernate-mapping> \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Order.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Order.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1507/Order.cs 2009-06-04 13:52:53 UTC (rev 4408) @@ -0,0 +1,38 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.NH1507 +{ + [Serializable] + public class Order + { + private int _id; + + protected internal Order() {} + + public virtual Employee Employee { get; set; } + + public virtual string CustomerId { get; set; } + + public virtual DateTime? OrderDate { get; set; } + + public virtual DateTime? RequiredDate { get; set; } + + public virtual DateTime? ShippedDate { get; set; } + + public virtual int? ShipVia { get; set; } + + public virtual decimal? Freight { get; set; } + + public virtual string ShipName { get; set; } + + public virtual string ShipAddress { get; set; } + + public virtual string ShipCity { get; set; } + + public virtual string ShipRegion { get; set; } + + public virtual string ShipPostalCode { get; set; } + + public virtual string ShipCountry { get; set; } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-04 00:06:41 UTC (rev 4407) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-06-04 13:52:53 UTC (rev 4408) @@ -369,6 +369,9 @@ <Compile Include="NHSpecificTest\NH1427\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1427\Person.cs" /> <Compile Include="NHSpecificTest\NH1487\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1507\Employee.cs" /> + <Compile Include="NHSpecificTest\NH1507\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1507\Order.cs" /> <Compile Include="NHSpecificTest\NH1531\DomainClass.cs" /> <Compile Include="NHSpecificTest\NH1531\SampleTest.cs" /> <Compile Include="NHSpecificTest\NH1553\MsSQL\Person.cs" /> @@ -1862,6 +1865,7 @@ <EmbeddedResource Include="CacheTest\EntityWithFilters.xml" /> <EmbeddedResource Include="Classic\EntityWithLifecycle.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1507\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1044\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1427\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1531\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |