我的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确实存在于此上下文中,并且所有表名都是正确的。
答案 0 :(得分:10)
您错过了MST
和WHERE
之间的空格。
答案 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>();