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.

Reply via email to