2012-06-07 2 views
1

다음을 지원하지 않는 것은 내 코드입니다 : 실행시NHibernate에 2 : CreateQuery 중국어 문자

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

는, 예외가 발생하지,하지만 쿼리 결과 반환

이는 (그들은 조건 c.name='测试'를 기반으로 반환해야합니다) SQL Hibernate는 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에서 '测试'가 '????'가됩니다. in sql.

Nhibernate를 통해 고객을 추가 할 때 중국어 문자가 성공적으로 저장됩니다. 여기서 문제는 CreateQuery를 사용하여 텍스트를 검색 할 때뿐입니다. 어떤 도움을 주시면 감사하겠습니다.

답변

0

매개 변수를 사용하여 시도해 볼 수 있습니까? Unicode String in Hibernate Queries

+0

관련

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

나는 그것을 시도했다. 그러나 생성 된 SQL은 여전히 ​​잘못되었습니다. –

+0

QueryOver를 사용해 보셨습니까? HQL 매개 변수가 데이터를 저장하는 데 사용되는 매개 변수와 동일하다고 생각하기 때문에 이상합니다. – dotjoe

+0

Nhibernate 2.1을 사용하고 QueryOver를 사용하지 않습니다. –

관련 문제