日期:2014-05-20  浏览次数:20774 次

hibernate查询时HQL语句中出现??,识别不了中文.
我想在hibernate中进行中文查询
比如from Test t where t.Name="张三"
控制台就输出找不到
然后看它的查询代码就是 where t.Name=???
试了将中文转换
String str=new String(("张三").getBytes("iso-8859-1"),"gb2312");
from Test t where t.Name='"+str+"'"也还是一样的
哪位知道要怎么搞?

------解决方案--------------------
你确定数据库的编码是iso-8859-1吗?
------解决方案--------------------
Hibernate3.0以下版本可能会出现此问题,但3.0及以上版本就不会出现此问题了,
解决此问题的办法:
Query query=session.createQuery("from Test t where t.Name=:name");
query.setString("name","张三");

你试试。
如果还不对,希望贴出更多的错误!
------解决方案--------------------
控制台就是那么显示的;
他用?代表字段的值;
你插入一个数据,比如session.save(对象);
然后,看看里面是不是乱码;
控制台不显示值滴`~~~
------解决方案--------------------
探讨
Hibernate3.0以下版本可能会出现此问题,但3.0及以上版本就不会出现此问题了,
解决此问题的办法:
Query query=session.createQuery("from Test t where t.Name=:name");
query.setString("name","张三");

你试试。
如果还不对,希望贴出更多的错误!