SetResultTransformer(Transformers.DistinctRootEntity) does not help ?
On 17 Ago, 10:17, Dwarrel <[email protected]> wrote: > This is normal (though often confusing) behaviour of NHibernate when > using a query which contains a Join. You basically get as many items > back when you would for a SQL result. I created a wrapper function > around the list to only return met the unique items. So that when I > call Customer Join Purchases and want to iterate over the customers I > do only visit every customer object once. The same happens when you > use SetFetchmode Join in a ICriteria query. I am not sure why they > designed it like this, because it is puzzling at first but it seems > consistent. When you add all the results to a set it will > automatically un-duplicate. Have had big issues when setting > relationships using lists rather than sets with this thing! Suddenly > when using join load performance optimisations I got duplicates in the > collections, just like you describe above. > > Hope this helps, > Theo > > On Aug 15, 8:34 am, Kasi <[email protected]> wrote: > > > The query (in the code), while running on SQL server returns the > > following result. > > > 53 10 _heading Supplier Sustainability > > Assessment 101 > > 53 10 _heading FR_SUST 102 > > 54 10 _tabHome Home 101 > > 55 10 _tabQuestionnaire Questionnaire 101 > > 56 10 _tabResults Results 101 > > 57 10 _tabResourcesFAQ Resources & FAQs > > 101 > > > But while running the code on visual studio returns the first row > > twice and instead of the second row - > > > 53 10 _heading Supplier Sustainability > > Assessment 101 > > 53 10 _heading Supplier Sustainability > > Assessment 101 > > 54 10 _tabHome Home 101 > > 55 10 _tabQuestionnaire Questionnaire 101 > > 56 10 _tabResults Results 101 > > 57 10 _tabResourcesFAQ Resources & FAQs > > 101 > > > I have no idea as to why. > > > Code. > > > private IList<WebpageElement> GetWBById(int id) > > { > > using (ISession session = NHibernateHelper.OpenSession()) > > using (ITransaction transaction = > > session.BeginTransaction()) > > { > > try > > { > > string sql = @" > > SELECT > > web_page_html_element.html_element_id, > > web_page_html_element.web_page_id, > > html_element.html_element_name, > > Html_Element_Text.html_element_txt, > > Html_Element_Text.language_code > > FROM Web_Page_Html_Element INNER JOIN > > Html_Element ON > > Web_Page_Html_Element.html_element_id = > > Html_Element.html_element_id INNER JOIN > > Html_Element_Text ON > > Html_Element.html_element_id = Html_Element_Text.html_element_id > > WHERE (Web_Page_Html_Element.web_page_id > > = :id)"; > > > ISQLQuery query = > > (ISQLQuery)session.CreateSQLQuery(sql) > > .SetInt32("id", id); > > var list = > > query.AddEntity(typeof(WebpageElement)).List<WebpageElement>(); > > return list; > > } > > finally > > { > > transaction.Commit(); > > } > > } > > > } > > > WebpageElement.CS > > public class WebpageElement > > { > > public virtual int Id { get; set; } > > public virtual int WebpageId { get; set; } > > public virtual string Name { get; set; } > > public virtual string Text { get; set; } > > public virtual string LanguageCode { get; set; } > > > public WebpageElement() { } > > } > > > WebpagElement.hbm.xml > > <class name="WebpageElement" table="web_page_html_element"> > > <id name="Id" column="html_element_id"> > > <generator class="native"/> > > </id> > > <property name ="WebpageId"> > > <column name="web_page_id"></column> > > </property> > > <join table="html_element"> > > <key column="html_element_id" /> > > <property name="Name"> > > <column name="html_element_name" /> > > </property> > > </join> > > <join table="html_element_text"> > > <key column="html_element_id"/> > > <property name="Text"> > > <column name="html_element_txt" /> > > </property> > > <property name="LanguageCode"> > > <column name="language_code" /> > > </property> > > </join> > > </class> -- 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.
