2011-06-24 122 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]); 
} 
相关问题