|
From: <ric...@us...> - 2010-08-14 21:04:57
|
Revision: 5155
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5155&view=rev
Author: ricbrown
Date: 2010-08-14 21:04:51 +0000 (Sat, 14 Aug 2010)
Log Message:
-----------
Added example of overriding join in QueryOver.
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Model.cs
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs 2010-08-14 20:29:14 UTC (rev 5154)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs 2010-08-14 21:04:51 UTC (rev 5155)
@@ -39,6 +39,8 @@
{
s.CreateQuery("delete from Child").ExecuteUpdate();
s.CreateQuery("delete from Person").ExecuteUpdate();
+ s.CreateQuery("delete from JoinedChild").ExecuteUpdate();
+ s.CreateQuery("delete from Parent").ExecuteUpdate();
t.Commit();
}
}
@@ -345,6 +347,40 @@
}
[Test]
+ public void OverrideEagerJoin()
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ s.Save(new Parent()
+ .AddChild(new JoinedChild())
+ .AddChild(new JoinedChild()));
+
+ t.Commit();
+ }
+
+ using (ISession s = OpenSession())
+ {
+ var persons =
+ s.QueryOver<Parent>()
+ .List();
+
+ Assert.That(NHibernateUtil.IsInitialized(persons[0].Children), "Default query did not eagerly load children");
+ }
+
+ using (ISession s = OpenSession())
+ {
+ var persons =
+ s.QueryOver<Parent>()
+ .Fetch(p => p.Children).Lazy
+ .List();
+
+ Assert.That(persons.Count, Is.EqualTo(1));
+ Assert.That(!NHibernateUtil.IsInitialized(persons[0].Children), "Children not lazy loaded");
+ }
+ }
+
+ [Test]
public void RowCount()
{
SetupPagingData();
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Mappings.hbm.xml 2010-08-14 20:29:14 UTC (rev 5154)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Mappings.hbm.xml 2010-08-14 21:04:51 UTC (rev 5155)
@@ -25,4 +25,21 @@
<many-to-one name="Parent" class="Person" />
</class>
+ <class name="Parent">
+ <id name="Id">
+ <generator class="native"/>
+ </id>
+ <bag name="Children" fetch="join" inverse="true" cascade="all-delete-orphan">
+ <key column="Parent" />
+ <one-to-many class="JoinedChild" />
+ </bag>
+ </class>
+
+ <class name="JoinedChild">
+ <id name="Id">
+ <generator class="native"/>
+ </id>
+ <many-to-one name="Parent" class="Parent" />
+ </class>
+
</hibernate-mapping>
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Model.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Model.cs 2010-08-14 20:29:14 UTC (rev 5154)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Model.cs 2010-08-14 21:04:51 UTC (rev 5155)
@@ -81,5 +81,28 @@
public int Count { get; set; }
}
+ public class Parent
+ {
+ public Parent()
+ {
+ Children = new List<JoinedChild>();
+ }
+
+ public virtual int Id { get; set; }
+ public virtual IEnumerable<JoinedChild> Children { get; set; }
+
+ public virtual Parent AddChild(JoinedChild child)
+ {
+ child.Parent = this;
+ (Children as IList<JoinedChild>).Add(child);
+ return this;
+ }
+ }
+
+ public class JoinedChild
+ {
+ public virtual int Id { get; set; }
+ public virtual Parent Parent { get; set; }
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|