我有类似的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我们已经开始使用参数化查询,我正面临这个问题。
答案 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);