IQuery不适用于IMultiQuery

时间:2013-07-17 12:13:55

标签: nhibernate hql

我有类似的IQueries :(以下IQueries只是简单的假人,事实上我有不同的方法创建一个Iquery)

IQuery q1 = "select q from Quarter where q.QuarterID = :QuarterID";
q1.SetParameter("QuarterID",14);
IQuery q2 = "select m from Month where m.QuarterID= :QuarterID";
q2.SetParameter("QuarterID",12);

然后我将它们添加到Multiquery并执行它:

IMultiQuery iMultiQuery = session.CreateMultiQuery();

iMultiQuery.Add(q1);

iMultiQuery.Add(q2);

Ilist _result = iMultiQuery.List();//This gives an error saying :

命名参数QuarterID用于多个查询。为参数指定唯一名称,或使用多查询SetParameter()方法设置命名参数。

注意:我在很多地方都有多个查询。但是,在我们没有使用参数化来创建Iquery之前。 Eversince我们已经开始使用参数化查询,我正面临这个问题。

I found the same issue logged here

1 个答案:

答案 0 :(得分:0)

我认为错误清楚地说明了您面临的问题以及如何解决问题。 在您添加到同一MultiQuery的查询中使用不同的参数名称,问题就解决了。

IQuery q1 = "select ... from Quarter q where q.Id = :qid1";
q1.SetParameter("qid1", 14);
IQuery q2 = "select ... from Quarter q where q.Id = :qid2";
q2.SetParameter("qid2", 12);

var mq = session.CreateMultiQuery();
mq.Add (q1);
mq.Add (q2);