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