从nhibernate中的composite-id列表中加载对象

时间:2011-06-24 14:43:20

标签: nhibernate orm hql composite-id

我想要做的是构建一个HQL查询,它接受一个id列表并返回一个已加载的objets列表。过了一会儿,我发现这样的东西可以起作用

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

但是,这仅适用于单个ID,因为当我尝试将其用于复合ID时,应用程序会抛出下一个异常:

  

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

我很无能......

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

你有什么想法吗?

感谢

1 个答案:

答案 0 :(得分: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]);
}