The SQL to eagerly load the recursive relation would be the same as what NH generates if I were to add lazy="true" onto the SubCategories's list mapping in my OP, and then execute this query: string s = "from Category as t where t.ParentCategory is null"; session.CreateQuery( s ).List<Category>();
Here is the generated SQL: NHibernate: SELECT subcategories0_.ParentCategoryID as ParentCa4_1_, subcategories0_.ID as ID1_, subcategories0_.PositionInList as Position5_1_, subcategories0_.ID as ID2_0_, subcategories0_.ParentCategoryID as ParentCa4_2_0_ FROM Category subcategories0_ WHERE subcategories0_.parentcategory...@p0;@p0 = 1 NHibernate: SELECT subcategories0_.ParentCategoryID as ParentCa4_1_, subcategories0_.ID as ID1_, subcategories0_.PositionInList as Position5_1_, subcategories0_.ID as ID2_0_, subcategories0_.ParentCategoryID as ParentCa4_2_0_ FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.parentcategory...@p0);@p0 = 1 NHibernate: SELECT subcategories0_.ParentCategoryID as ParentCa4_1_, subcategories0_.ID as ID1_, subcategories0_.PositionInList as Position5_1_, subcategories0_.ID as ID2_0_, subcategories0_.ParentCategoryID as ParentCa4_2_0_ FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.parentcategory...@p0));@p0 = 1 NHibernate: SELECT subcategories0_.ParentCategoryID as ParentCa4_1_, subcategories0_.ID as ID1_, subcategories0_.PositionInList as Position5_1_, subcategories0_.ID as ID2_0_, subcategories0_.ParentCategoryID as ParentCa4_2_0_ FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.parentcategory...@p0)));@p0 = 1 NHibernate: SELECT subcategories0_.ParentCategoryID as ParentCa4_1_, subcategories0_.ID as ID1_, subcategories0_.PositionInList as Position5_1_, subcategories0_.ID as ID2_0_, subcategories0_.ParentCategoryID as ParentCa4_2_0_ FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.parentcategory...@p0))));@p0 = 1 NHibernate: SELECT subcategories0_.ParentCategoryID as ParentCa4_1_, subcategories0_.ID as ID1_, subcategories0_.PositionInList as Position5_1_, subcategories0_.ID as ID2_0_, subcategories0_.ParentCategoryID as ParentCa4_2_0_ FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.parentcategory...@p0)))));@p0 = 1 NHibernate: SELECT subcategories0_.ParentCategoryID as ParentCa4_1_, subcategories0_.ID as ID1_, subcategories0_.PositionInList as Position5_1_, subcategories0_.ID as ID2_0_, subcategories0_.ParentCategoryID as ParentCa4_2_0_ FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.ParentCategoryID in (select subcategories0_.ID FROM Category subcategories0_ WHERE subcategories0_.parentcategory...@p0))))));@p0 = 1 But I want the SubCategories list to load lazily by default. On Aug 3, 4:48 pm, Fabio Maulo <[email protected]> wrote: > 2009/8/3 HappyNomad <[email protected]> > > > > > Really sorry, but I'm still drawing a blank. If you provide some > > sample code then it would be easier for me to understand your > > suggestion. > > The "sample" is exactly what I'm asking you. > Can you write a SQL to eagerly load recursive relation ? > > -- > Fabio Maulo --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
