Hibernate 3 中文乱码的解决(转)

本文介绍了在使用Hibernate进行中文查询时遇到的问题及解决方案。通过在配置文件中添加特定属性或使用预编译HQL,可以有效避免中文字符导致的检索失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在项目中遇到了一个问题,就是做查询的时候,如果用户输入中文的话,明明数据库有这样的记录,却怎么也检索不到结果。作为调试的手段,我把hql语句打印出来,也没有发现什么问题,和预期的一样。甚是郁闷,后来,上网查了一下资料,原来是hibernate3对中文的支持不是太好,需要在hibernate的配置文件中添加一个属性,(这里使用了spring的IOC容器来注入)
<property name="hibernateProperties">
<props>
<prop key="hibernate.query.factory_class">
${hibernate.query.factory_class}<!--添加这个属性就可以了-->
</prop>
........................
</property>
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
原因是hibernate在把hql转换成sql语句的时候,出现了乱码(如果有中文的话),按以上的配置的话,就没有什么问题了。还有一个方法就是,使用预编译的hql,然后动态绑定参数。不过这个方法是针对这一个函数本身而言的,如果你是使用Hibernate3而很多查询涉及中文的话,最好使用配置文件的方式,简单。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值