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