|
From: <fab...@us...> - 2011-04-23 20:05:09
|
Revision: 5752
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5752&view=rev
Author: fabiomaulo
Date: 2011-04-23 20:05:03 +0000 (Sat, 23 Apr 2011)
Log Message:
-----------
Fix NH-1747
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Loader/Collection/OneToManyJoinWalker.cs
trunk/nhibernate/src/NHibernate/Persister/Collection/OneToManyPersister.cs
trunk/nhibernate/src/NHibernate.DomainModel/Multi.hbm.xml
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1747/Fixture.cs
Modified: trunk/nhibernate/src/NHibernate/Loader/Collection/OneToManyJoinWalker.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Loader/Collection/OneToManyJoinWalker.cs 2011-04-23 18:51:34 UTC (rev 5751)
+++ trunk/nhibernate/src/NHibernate/Loader/Collection/OneToManyJoinWalker.cs 2011-04-23 20:05:03 UTC (rev 5752)
@@ -43,11 +43,11 @@
InitStatementString(elementPersister, alias, batchSize, subquery);
}
- // NH-1747 FIX
- //protected override string GenerateAliasForColumn(string rootAlias, string column)
- //{
- // return elementPersister.GenerateTableAliasForColumn(rootAlias, column);
- //}
+ protected override string GenerateAliasForColumn(string rootAlias, string column)
+ {
+ // NH-1747 FIX (see OneToManyPersister)
+ return elementPersister.GenerateTableAliasForColumn(rootAlias, column);
+ }
private void InitStatementString(IOuterJoinLoadable elementPersister, string alias, int batchSize, SqlString subquery)
{
Modified: trunk/nhibernate/src/NHibernate/Persister/Collection/OneToManyPersister.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Persister/Collection/OneToManyPersister.cs 2011-04-23 18:51:34 UTC (rev 5751)
+++ trunk/nhibernate/src/NHibernate/Persister/Collection/OneToManyPersister.cs 2011-04-23 20:05:03 UTC (rev 5752)
@@ -321,21 +321,27 @@
.ToString();
}
- // NH-1747 FIX
- //protected override SelectFragment GenerateSelectFragment(string alias, string columnSuffix)
- //{
- // var ojl = (IOuterJoinLoadable)ElementPersister;
- // var selectFragment = new SelectFragment(Dialect).SetSuffix(columnSuffix);
- // var columnNames = KeyColumnNames;
- // var columnAliases = KeyColumnAliases;
- // for (int i = 0; i < columnNames.Length; i++)
- // {
- // var column = columnNames[i];
- // var tableAlias = ojl.GenerateTableAliasForColumn(alias, column);
- // selectFragment.AddColumn(tableAlias, column, columnAliases[i]);
- // }
- // return selectFragment;
- //}
+ protected override SelectFragment GenerateSelectFragment(string alias, string columnSuffix)
+ {
+ /*
+ NH-1747 FIX
+ Note: the fix for NH-1747 may cause some problem when the same ColumnName is used to represent two different properties in the same hierarchy
+ In all our test it happened only for NHibernate.Test.Legacy.MultiTableTest.MultiTableCollections
+ The mapping Multi.hbm.xml had a column named "parent" to represent the Key of a set for the relation Lower->Top and SubMulti->SubMulti everything in the same hierarchy
+ NH TODO: Have to add an early check of same ColumnName used to represent two relations.
+ */
+ var ojl = (IOuterJoinLoadable)ElementPersister;
+ var selectFragment = new SelectFragment(Dialect).SetSuffix(columnSuffix);
+ var columnNames = KeyColumnNames;
+ var columnAliases = KeyColumnAliases;
+ for (int i = 0; i < columnNames.Length; i++)
+ {
+ var column = columnNames[i];
+ var tableAlias = ojl.GenerateTableAliasForColumn(alias, column);
+ selectFragment.AddColumn(tableAlias, column, columnAliases[i]);
+ }
+ return selectFragment;
+ }
/// <summary>
/// Create the <see cref="OneToManyLoader" />
Modified: trunk/nhibernate/src/NHibernate.DomainModel/Multi.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.DomainModel/Multi.hbm.xml 2011-04-23 18:51:34 UTC (rev 5751)
+++ trunk/nhibernate/src/NHibernate.DomainModel/Multi.hbm.xml 2011-04-23 20:05:03 UTC (rev 5752)
@@ -62,10 +62,10 @@
<key column="sid"/>
<property name="Amount" column="dupe"/>
<bag name="Children" lazy="true" inverse="true" >
- <key column="parent"/>
+ <key column="parentId"/>
<one-to-many class="NHibernate.DomainModel.SubMulti, NHibernate.DomainModel"/>
</bag>
- <many-to-one name="Parent" column="parent" />
+ <many-to-one name="Parent" column="parentId" />
<list name="MoreChildren" lazy="true">
<key column="another_parent"/>
<index column="list_ind"/>
Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1747/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1747/Fixture.cs 2011-04-23 18:51:34 UTC (rev 5751)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1747/Fixture.cs 2011-04-23 20:05:03 UTC (rev 5752)
@@ -43,7 +43,7 @@
}
}
- [Test, Ignore("The fix was commented in the code. Look for NH-1747")]
+ [Test]
public void TraversingBagToJoinChildElementShouldWork()
{
using (ISession session = OpenSession())
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|