日期:2014-05-18  浏览次数:20662 次

Hibernate 在执行 select 语句时发生中文乱码
最近自己在做一个小的Web项目,采用Struts+Hibernate,接近尾声时才发现一个中文乱码问题,
即,在执行查询语句时,中文出现乱码。
我郁闷啊,其他的一些中文操作都很正常,唯独在执行查询时发生乱码,难道Hibernate在生成不同的DML语句时采用不同的编码方式?请高手指教。
我的配置:
        Tomcat   5.5
        MySQL   5.1
        Struts   1.2
        Hibernate   3.0

问题解决马上散分

------解决方案--------------------
改方言.
<property name= "dialect "> org.hibernate.dialect.HSQLDialect </property>
------解决方案--------------------
好象是
hibernate.query.factory_class org.hibernate.hql.classic.ClassicQueryTranslatorFactory

我记得好象是这个...
------解决方案--------------------
你是用的HQL吗?
如果是,那你应该用 form table as a where a.username=?
把问号给替换掉就可以了
------解决方案--------------------
有兩种解決方案
第一种,數據庫支持語言可以設置成UTF-8,具體選哪裏,以後說,免得摟主TJ了該貼。
第二种,使用捆綁數據的方式,有點像我上面那位說的

------解决方案--------------------
我也碰见了,以上都不是解决办法;最根本的解决办法就是更换jar包,使用3.0.5到3.1之间的版本

如果这么改:hibernate.query.factory_class org.hibernate.hql.classic.ClassicQueryTranslatorFactory
在执行删除时有问题!
如果换成3.2的jar,回报session is closed...的错误(好像3.2中自动关闭session)
------解决方案--------------------
建议更换jar包,我用hibernate时也经常出现jar版本混乱,弄好使一个都不敢轻意换,去官方下载,如果用的HQL应该是楼上几位说的那样