3

我在下面的 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,并且所有表名都是正确的。

4

2 回答 2

12

MST您在和之间缺少一个空格WHERE

于 2012-10-11T17:00:47.010 回答
0

您必须使用方法来使用流畅的界面样式创建 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>();
于 2012-10-11T16:10:30.340 回答