2012-06-07 5 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, я думаю. –

Смежные вопросы