2012-06-07 37 views
1

以下是我的代碼:NHibernate的2:的createQuery不支持中國文字

String hsql = "from Customer c where c.name='測試' "; 
IQuery query = _session.CreateQuery(hsql); 
query.List(); 

執行時,沒有拋出異常,但沒有查詢結果返回(他們應該返回基於條件c.name='測試'

這是SQL NHibernate爲hsql生成:

select customer0_.CUSTOMER_NO as CUSTOMER1_, customer0_.CODE as CODE9_, customer0_.NAME as NAME9_, customer0_.STATUS as STATUS9_, customer0_.LAST_OPE RATOR_NO as LAST5_9_ 
from CUSTOMER customer0_ where (customer0_.NAME='????') 

hsql中的漢字'測試'變成'????'在SQL中。

當我通過Nhibernate添加客戶時,中文字符可以成功保存。這裏只有當我使用CreateQuery搜索文本時纔會出現這個問題。任何幫助將不勝感激。

回答

0

你可以嘗試使用參數嗎?

String hsql = "from Customer c where c.name=:name"; 
IQuery query = _session.CreateQuery(hsql).SetString("name", "測試"); 
query.List(); 

相關 Unicode String in Hibernate Queries

+0

我試過了。但仍生成的SQL是錯誤的。 –

+0

你用過QueryOver嗎?這很奇怪,因爲我認爲HQL參數與用於保存數據的參數相同。 – dotjoe

+0

我正在使用Nhibernate 2.1,並且沒有QueryOver我認爲。 –