2012-01-02 44 views
1

我有以下SQL:功能NHibernate加入指定聯接標準

select a.a, b.b, c.c 
from apple a 
join burger b on a.b = b.b 
left outer join charlie c on a.c = c.c 
where c.x = 'kke'; 

映射它,我試圖以下功能NHibernate映射:

public entityMap() 
    { 
     Table("apple"); 
     Id(x => x.a, "a").GeneratedBy.TriggerIdentity(); 

     Join("burger", m => 
     { 
      m.Inverse(); 
      m.Fetch.Join(); 
      m.KeyColumn("b"); 


     }); 
     Join("charlie", m => 
             { 
      m.Inverse(); 
      m.Fetch.Join(); 
      m.KeyColumn("c"); 
     }); 
     Where("this_1_.x = 'kke'"); 

    } 

這導致以下SQL:

select a.a, b.b, c.c 
from apple a 
join burger b on a.a = b.b 
left outer join charlie c on a.a = c.c 
where c.x = 'kke'; 

正如你所看到的,連接是aa = bb和aa = cc,當我希望它們是ac = cc和ab = B.B。我怎樣才能acheieve這沒有引用(我只想從所有三個表中的一個實體)。

回答

1

這是不可能的。

我不認爲NHibernate是您正在使用的那種以數據庫爲中心的方法的正確工具。