从nhibernate中的复合ID列表加载对象

从nhibernate中的复合ID列表加载对象,nhibernate,orm,hql,composite-id,Nhibernate,Orm,Hql,Composite Id,我想做的是构建一个HQL查询,它接受一个ID列表并返回一个已加载对象列表。过了一段时间,我发现像这样的事情可以奏效 from Foo foo where foo.ID in (:IdList) 但是,这只适用于单一ID,因为当我尝试将其用于复合ID时,应用程序会引发下一个异常: System.ArgumentOutOfRangeException:索引超出范围。必须为非负数且小于集合的大小。参数名称:索引 我不知道 我为我的id对象创建了一个自定义类型,希望能解释hibernate如何使用它,

我想做的是构建一个HQL查询,它接受一个ID列表并返回一个已加载对象列表。过了一段时间,我发现像这样的事情可以奏效

from Foo foo where foo.ID in (:IdList)
但是,这只适用于单一ID,因为当我尝试将其用于复合ID时,应用程序会引发下一个异常:

System.ArgumentOutOfRangeException:索引超出范围。必须为非负数且小于集合的大小。参数名称:索引

我不知道

我为我的id对象创建了一个自定义类型,希望能解释hibernate如何使用它,但没有成功

你有什么想法吗


谢谢

据我所知,我想不出一个sqlquery可以在不能成对输入的情况下完成这项工作

这在我的头顶上就足够了吗?我现在不能测试它

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]);
}