|
From: <fab...@us...> - 2011-03-25 17:42:22
|
Revision: 5529
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5529&view=rev
Author: fabiomaulo
Date: 2011-03-25 17:42:16 +0000 (Fri, 25 Mar 2011)
Log Message:
-----------
Applied (modified) fix of NH-2490 (thanks to Matthew Gabeler-Lee)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Mapping/Join.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Fixture.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Model.cs
Modified: trunk/nhibernate/src/NHibernate/Mapping/Join.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/Join.cs 2011-03-25 12:01:05 UTC (rev 5528)
+++ trunk/nhibernate/src/NHibernate/Mapping/Join.cs 2011-03-25 17:42:16 UTC (rev 5529)
@@ -1,8 +1,8 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using NHibernate.Engine;
using NHibernate.SqlCommand;
-using NHibernate.Util;
namespace NHibernate.Mapping
{
@@ -90,7 +90,7 @@
pk.Name = PK_ALIAS.ToAliasString(table.Name, dialect);
table.PrimaryKey = pk;
- pk.AddColumns(new SafetyEnumerable<Column>(Key.ColumnIterator));
+ pk.AddColumns(Key.ColumnIterator.OfType<Column>());
}
public int PropertySpan
@@ -149,13 +149,8 @@
{
if (!isLazy.HasValue)
{
- IEnumerator<Property> iter = PropertyIterator.GetEnumerator();
- while (iter.MoveNext() && !isLazy.HasValue)
- {
- if (!iter.Current.IsLazy)
- isLazy = false;
- }
- isLazy = true;
+ var hasAllLazyProperties = !PropertyIterator.Any(property=> property.IsLazy == false);
+ isLazy = hasAllLazyProperties;
}
return isLazy.Value;
}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Fixture.cs 2011-03-25 17:42:16 UTC (rev 5529)
@@ -0,0 +1,50 @@
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.NHSpecificTest.NH2490
+{
+ [TestFixture]
+ public class Fixture : BugTestCase
+ {
+ [Test]
+ public void BadSqlFromJoinLogicError()
+ {
+ try
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ Derived item1 = new Derived()
+ {
+ ShortContent = "Short",
+ ShortContent2 = "Short2",
+ LongContent = "LongLongLongLongLong",
+ LongContent2 = "LongLongLongLongLong2",
+ };
+ s.Save(item1);
+ t.Commit();
+ }
+
+ // this is the real meat of the test
+ // for most edifying results, run this with show_sql enabled
+
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ var q = s.CreateQuery("from Base");
+ q.Executing(query => query.List()).NotThrows();
+ }
+ }
+ finally
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ s.Delete("from Derived");
+ t.Commit();
+ }
+ }
+ }
+
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Mappings.hbm.xml 2011-03-25 17:42:16 UTC (rev 5529)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ namespace="NHibernate.Test.NHSpecificTest.NH2490"
+ assembly="NHibernate.Test"
+>
+ <class name="Base" abstract="true">
+ <id name="Id">
+ <generator class="increment"/>
+ </id>
+ <discriminator column="Discriminator" type="String" />
+ <property name="ShortContent" not-null="true"/>
+ <property name="LongContent" lazy="true" not-null="true"/>
+ </class>
+ <subclass name="Derived" extends="Base" discriminator-value="Derived">
+ <join table="Derived" fetch="join">
+ <key column="Id" />
+ <property name="ShortContent2" not-null="true"/>
+ <property name="LongContent2" lazy="true" not-null="true" />
+ </join>
+ </subclass>
+</hibernate-mapping>
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Model.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Model.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2490/Model.cs 2011-03-25 17:42:16 UTC (rev 5529)
@@ -0,0 +1,39 @@
+
+namespace NHibernate.Test.NHSpecificTest.NH2490
+{
+ public class Base
+ {
+ public virtual int Id
+ {
+ get;
+ set;
+ }
+
+ public virtual string ShortContent
+ {
+ get;
+ set;
+ }
+
+ public virtual string LongContent
+ {
+ get;
+ set;
+ }
+ }
+
+ public class Derived : Base
+ {
+ public virtual string ShortContent2
+ {
+ get;
+ set;
+ }
+
+ public virtual string LongContent2
+ {
+ get;
+ set;
+ }
+ }
+}
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-25 12:01:05 UTC (rev 5528)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-03-25 17:42:16 UTC (rev 5529)
@@ -654,6 +654,8 @@
<Compile Include="NHSpecificTest\NH2470\DTO.cs" />
<Compile Include="NHSpecificTest\NH2484\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2484\Model.cs" />
+ <Compile Include="NHSpecificTest\NH2490\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH2490\Model.cs" />
<Compile Include="NHSpecificTest\NH2491\Fixture.cs" />
<Compile Include="NHSpecificTest\NH2507\Animal.cs" />
<Compile Include="NHSpecificTest\NH2507\Fixture.cs" />
@@ -2490,6 +2492,7 @@
<EmbeddedResource Include="NHSpecificTest\NH1291AnonExample\Mappings.hbm.xml" />
</ItemGroup>
<ItemGroup>
+ <EmbeddedResource Include="NHSpecificTest\NH2490\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1925\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2527\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1323\Mappings.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|