从 nhibernate 中的复合 ID 列表中加载对象
Posted
技术标签:
【中文标题】从 nhibernate 中的复合 ID 列表中加载对象【英文标题】:loading objects from a list of composite-ids in nhibernate 【发布时间】:2011-06-24 14:43:19 【问题描述】:我想要做的是构建一个 HQL 查询,它接受一个 id 列表并返回一个加载的对象列表。过了一会儿,我发现这样的东西可以工作
from Foo foo where foo.ID in (:IdList)
但是,这仅适用于单个 id,因为当我尝试将其用于复合 id 时,应用程序会引发下一个异常:
System.ArgumentOutOfRangeException : 索引超出范围。必须是非负数且小于集合的大小。参数名称:索引
我一无所知...
我为我的 id 对象创建了一个自定义类型,希望我可以解释 hibernate 如何使用它,但它没有成功。
那么你有什么想法吗?
谢谢
【问题讨论】:
【参考方案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]);
【讨论】:
以上是关于从 nhibernate 中的复合 ID 列表中加载对象的主要内容,如果未能解决你的问题,请参考以下文章
Fluent NHibernate 多对多映射,使用自动生成的 pk 而不是复合键