【问题标题】:NHibernate HQL could not locate named parameter [parameterName] errorNHibernate HQL 找不到命名参数 [parameterName] 错误
【发布时间】:2012-10-02 08:22:05
【问题描述】:

我在下面的 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 确实存在于这个上下文中,并且所有的表名都是正确的。

【问题讨论】:

    标签: nhibernate hql


    【解决方案1】:

    MSTWHERE 之间缺少一个空格。

    【讨论】:

      【解决方案2】:

      您必须使用 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>();
      

      【讨论】:

        猜你喜欢
        • 2017-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-29
        • 2012-07-30
        • 2020-06-04
        • 2012-09-08
        • 2012-11-03
        相关资源
        最近更新 更多