【问题标题】:loading objects from a list of composite-ids in nhibernate从 nhibernate 中的复合 ID 列表中加载对象
【发布时间】:2011-06-24 14:43:19
【问题描述】:

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

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

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

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

我一无所知...

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

那么你有什么想法吗?

谢谢

【问题讨论】:

    标签: nhibernate orm hql composite-id


    【解决方案1】:

    我想不出可以做到这一点的 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]);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      相关资源
      最近更新 更多