我想要做的是构建一个HQL查询,它接受一个id列表并返回一个已加载的objets列表。过了一会儿,我发现这样的东西可以起作用
from Foo foo where foo.ID in (:IdList)
但是,这仅适用于单个ID,因为当我尝试将其用于复合ID时,应用程序会抛出下一个异常:
System.ArgumentOutOfRangeException:索引超出范围。必须是非负数且小于集合的大小。参数名称:index
我很无能......
我为我的id对象创建了一个自定义类型,希望我能解释一下hibernate如何使用它,但它没有用。
你有什么想法吗?
感谢
答案 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]);
}