2011-06-24 72 views
0

我想要做的就是構建一個HQL查詢,它接受一個id列表並返回一個加載objets列表。過了一會兒,我發現,這樣的事情可以工作從nhibernate中的複合標識列表中加載對象

from Foo foo where foo.ID in (:IdList) 

然而,這僅適用於單一的IDS怎麼一回事,因爲當我嘗試使用它的複合ID的應用程序拋出一個異常:

System.ArgumentOutOfRangeException:索引超出範圍。必須是非負數且小於集合的大小。參數名:索引

我無言以對......

我創建了一個自定義類型爲我的ID對象希望我能休眠解釋如何使用它,但它沒有工作了。

那麼你有什麼想法嗎?

感謝

回答

0

我想不出SQLQuery對能夠做到這一點(In不能採取對輸入據我所知)的

將這個就夠了(在我的頭頂,不能測試它馬上)?

var query = "from Foo foo where "; 

for (int i = 0; i < idlist.Count; i++) 
{ 
    query += "OR foo.ID = :p" + i; 
} 

var hqlquery = session.CreateQuery(query); 
for (int i = 0; i < idlist.Count; i++) 
{ 
    hqlquery.SetParameter("p" + i, idlist[0]); 
} 
相關問題