我從用戶界面傳遞字符「:」時遇到了問題。 NHibernate將它誤認爲一個命名參數並引發錯誤,因爲它沒有任何值。冒號':'錯誤 - 並非所有命名參數都已在Nhibernate中設置?
例外是: -
並非所有命名參數已經 組:[%] [SELECT COUNT(*)FROM表 噸WHERE t.FirstName LIKE ':%' AND t.ID IN(38,20)]」
有什麼解決辦法?
我從用戶界面傳遞字符「:」時遇到了問題。 NHibernate將它誤認爲一個命名參數並引發錯誤,因爲它沒有任何值。冒號':'錯誤 - 並非所有命名參數都已在Nhibernate中設置?
例外是: -
並非所有命名參數已經 組:[%] [SELECT COUNT(*)FROM表 噸WHERE t.FirstName LIKE ':%' AND t.ID IN(38,20)]」
有什麼解決辦法?
你需要使用SQL LIKE時逃跑的特殊字符,嘗試傳遞參數作爲@"\" + ":";
。
您可能正在創建一個錯誤的方式查詢(連接字符串,也許?)
所有這些工作:
session.CreateCriteria<Test2>()
.Add(Restrictions.Like("FirstName", ":%"))
.UniqueResult<Test2>();
session.CreateQuery("from Test2 where FirstName like :expr")
.SetParameter("expr", ":%")
.UniqueResult<Test2>();
你真的是對的,通過連接字符串來準備adhoc查詢... – Jango 2010-04-05 18:40:56
Hey..it沒有幫助... – Jango 2010-04-06 14:39:04
請出示調用查詢的代碼。另請參閱此問題的接受答案:http://stackoverflow.com/questions/2492984/how-do-i-escape-a-like-clause-using-nhibernate-criteria – 2010-04-06 14:50:10
這是轉義特殊字符後的內部異常...「 {」並非所有命名參數已設置:[%] [SELECT COUNT(*)FROM Table t WHERE t.FirstName LIKE'\\:%']「} – Jango 2010-04-06 14:56:24