2011-04-06 50 views
0

我是NHibernate的新手。我們在數據庫中有兩個表AccountDailyInfo和AccountEvent。 AccountDailyInfo有一個組合鍵。 AccountEvent與AccountDailyInfo的組合鍵具有外鍵關係。因此,在我們的實體類因此我們有AccountEvent的AccountDailyInfo的通過Criteria API在NHibernate 2.1.1.2中使用連接

-IList稱爲AccountEventList

-A型AccountDailyInfo的財產AccountEvent

現在,我們要執行這兩個表的聯接。 我已經能夠使用下面的語句產生一個簡單的連接。

_ses.CreateCriteria<AccountDailyInfo>().CreateAlias("AccountEventList", "foreignKey", NHibernate.SqlCommand.JoinType.InnerJoin) 
       .List<AccountDailyInfo>() 

但是,這裏我們無法應用基於AccountEvent表中的值的過濾條件。 類似地,在一個總體查詢中,我們至少使用4到5個表中的連接。最後,我們將根據來自所有不同表格的值篩選出結果。

我請求有人爲我提供一個簡單的和一個複雜的Criteria查詢,瞭解多個聯接的工作原理以及我們如何應用相同的過濾。也可以連接它們之間沒有映射關係的表嗎?

+1

東西,如果你可以發佈您的賬戶類的結構,我可以拿出一個條件查詢。或者,你可以看看這個鏈接http://stackoverflow.com/questions/372047/how-to-a-write-a-criteria-query-with-multiple-joins-involved – WorldIsRound 2011-04-06 16:42:05

回答

0

只需使用您提供的別名來過濾連接。所以你的情況是「外鍵」 所以,你可以不喜歡

criteria.Add(Restrictions.Eq("foreignkey.Name", "SomeEventName")); 
+0

感謝您的答覆。由於我的映射錯誤,我以前得到一個錯誤。如果你可以參考我的問題http://stackoverflow.com/questions/5569551/confusion-over-one-to-one-mapping-in-nhibernate。在那裏顯示的映射阻止我加入我的ParentTable和ChildTable。如果你能幫我解決這個問題,那會很棒。 – 2011-04-06 17:26:55

相關問題