2012-10-11 57 views
3

我有我的HQL查詢波紋管的問題:NHibernate的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確實存在於此上下文中,並且所有表名都是正確的。

回答

10

你缺少MSTWHERE之間的空間。

+1

我是多麼的愚蠢! :) 謝謝! –

+0

不要忘記接受正確的答案。 –

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>(); 
相關問題