NHibernate HQL无法找到命名参数[parameterName]错误

时间:2012-10-11 15:43:27

标签: nhibernate hql

我的HQL查询存在问题:

var merchantTransactions = session.CreateQuery("SELECT MS.Transaction "+
                                               "FROM MerchantSite AS MS "+
                                               "INNER JOIN MS.Transaction AS MST"+
                                               "WHERE MS.Site.Name = :merchantName");

然后我设置这样的参数:

merchantTransactions.SetParameter("merchantName", merchantName);

它给了我一个“无法找到命名参数”的错误,任何想法为什么?

merchantName确实存在于此上下文中,并且所有表名都是正确的。

2 个答案:

答案 0 :(得分:10)

您错过了MSTWHERE之间的空格。

答案 1 :(得分:0)

您必须使用方法来使用fluent interface样式创建HQL语句。尝试这样的事情:

var merchantTransactions = session.CreateQuery("SELECT MS.Transaction "+
                                               "FROM MerchantSite AS MS "+
                                               "INNER JOIN MS.Transaction AS MST"+
                                               "WHERE MS.Site.Name = :merchantName")
                                  .SetParameter("merchantName", merchantName);

或者

merchantTransactions = merchantTransactions.SetParameter("merchantName", merchantName);

不要忘记调用一个方法来具体查询。

  var result = merchantTransactions.List<Entity>();