java中使用mysql查询 条件中含有中文时查询不到结果_关于Hibernate中使用 hql查询时 中文问题导致没查询结果 - Java论坛 - 51CTO技术论坛_中国领先的IT技术社区...

41413e7027ffa026ba737eccea21484e.gif

这问题困扰了我两天了,但始终找不到错在那?不知道其所以然,刚才忽然间听人提起url连接时要注意中文问题时,才开始怀疑,是不是因为中文问题?好废话补多少直入主题;

原因很简单,问题在于我连接mysql用的url时,没有指定字符集,导致下面源码查询不到任何数据(前提是数据库存在符合该条件的数据sql语句执行是可以的):

Session session=null;

Transaction transaction=null;

try{

session= HibernateSessionUtil.openSession();//session确保了能拿到

transaction=session.beginTransaction();

//查询计算机系和外语系的学生

String hql="From  Student where sdept  in ('计算机系','外语系')";

Query query=session.createQuery(hql);

List list=query.list();

for(Student stu :list){

System.out.println(stu.getSname()+"\t"+stu.getSdept()+"\t");

}

transaction.commit();

}catch(Exception e){

if(transaction!=null)transaction.rollback();

e.printStackTrace();

}finally{

if(session!=null&&session.isOpen()){

session.close();

}

}

代码本身没有问题,问题出在 hibernate.xml配置文件中:

原来写法:

jdbc:mysql://localhost:3306/hql_test

修改后:

jdbc:mysql://localhost:3306/hql_test?useunicode=true&characterEncoding=utf8

好了,重新执行;

结果出来了:

Hibernate: select student0_.id as id0_, student0_.snum as snum0_, student0_.sname as sname0_, student0_.ssex as ssex0_, student0_.sdept as sdept0_, student0_.sage as sage0_, student0_.saddress as saddress0_ from hql_test.student student0_ where student0_.sdept in ('计算机系' , '外语系')

林青霞

计算机系

刘德华

外语系

林可欣

计算机系

oracle好像没有这个问题,此次主要是针对mysql而言的,其他数据库有没有遇到这问题,本人没有亲身测试,如果有这问题,我个人认为,在保证程序与hql语句正确的情况下,首先Hibernate出错的原因较少,因为Hibernate没有那么垃圾,那么只能怀疑是否是中文问题了。

说的有什么不对和不足望大家多多指出和指教谢谢。

2013-4-25 16:56

242797599233f2c707ee0ee4add9a2ee.png

+3

乐于分享

2013-4-25 18:10

分享至:

90ed4b13fe016cebd9fe3df2ae3a899b.gif

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值