Skip to content

NH-3210 - NHibernate Linq Provider does cross join or left outer join and not inner join (even if outer-join=false on many-to-one mapping) #1128

Closed
@nhibernate-bot

Description

@nhibernate-bot

Taavi Kõosaar created an issue — 10th July 2012, 13:41:08:

var st1 = from ultt in _nHibernateSession.Query<UnitLeadTimeTemplate>()
          where ultt.Unit.Id == unitId
          select ultt.LeadTimeTemplate;
st1.ToList();

var st2 = from ultt in _nHibernateSession.Query<UnitLeadTimeTemplate>()
          from ltt in _nHibernateSession.Query<LeadTimeTemplate>()
          where ultt.Unit.Id == unitId
          select ltt;
st2.ToList();

var st3 = from ultt in _nHibernateSession.Query<UnitLeadTimeTemplate>()
          join ltt in _nHibernateSession.Query<LeadTimeTemplate>() 
            on ultt.LeadTimeTemplate.Id equals ltt.Id
          where ultt.Unit.Id == unitId
          select ltt;
st3.ToList();
-- statement #1
select leadtimete1_.lead_time_template_id as lead1_24_,
       leadtimete1_.Name                  as Name24_,
       leadtimete1_.Description           as Descript3_24_
from   unit_lead_time_template unitleadti0_
       left outer join lead_time_template leadtimete1_
         on unitleadti0_.lead_time_template_id = leadtimete1_.lead_time_template_id
where  unitleadti0_.unit_id = 8378 /** @p0 **/

-- statement #2
select leadtimete1_.lead_time_template_id as lead1_24_,
       leadtimete1_.Name                  as Name24_,
       leadtimete1_.Description           as Descript3_24_
from   unit_lead_time_template unitleadti0_,
       lead_time_template leadtimete1_
where  unitleadti0_.unit_id = 8378 /** @p0 **/

-- statement #3
select leadtimete1_.lead_time_template_id as lead1_24_,
       leadtimete1_.Name                  as Name24_,
       leadtimete1_.Description           as Descript3_24_
from   unit_lead_time_template unitleadti0_,
       lead_time_template leadtimete1_
where  leadtimete1_.lead_time_template_id = unitleadti0_.lead_time_template_id
       and unitleadti0_.unit_id = 8378 /** @p0 **/

Even though in the mapping of UnitLeadTimeTemplate i have configured:
Many-To-One with not-null="true" and outer-join="false"

There doesnt seem to be any consistent way to force inner-join to happen with linq query implementation in NH.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions