hibernate+mysql查询条件有中文无法匹配的问题

 

 
 

用hibernate做mysql的数据库连接时,当查询条件中有中文的时候,查询结果没有记录,而数据库中是存在符合条件的记录的。

如下面的查询语句:

select t.id.student.sid from Studentcourse as t where t.fkTid='"+tid+"' and t.id.fkCid='"+cid+"' and t.fkClassId='"+classId+"' and t.fkSemester='"+semester+"' order by t.id.student.sid desc

其中where条件中的classId和semester是中文的。

用这条语句查询到的记录为空。

这一问题原来是没有的,重新部署后才出现,所以由于字符集的问题造成的,但我改了很多次字符集都搞不定,数据库、jsp、及数据库连接改成一致的时候也解决不了问题。

后来有一个比较麻烦的办法,但是可以解决问题,就是改写查询语句的书写方式:将变量值的指定写在语句外面

原来的方式:

   List sc=session.createQuery("select t.id.student.sid from Studentcourse as t where t.fkTid='"+tid+"' and t.id.fkCid='"+cid+"' and t.fkClassId='"+classId+"' and t.fkSemester='"+semester+"' order by t.id.student.sid desc").list();

现在的方式:
  String sqlString = "select t.id.student.sid from Studentcourse as t where t.fkTid=:tid and t.id.fkCid=:cidand t.fkClassId=:classId and t.fkSemester=:semester order by t.id.student.sid desc";
  Query query = session.createQuery(sqlString);
  query.setString("tid", tid);
  query.setString("cid", cid);
  query.setString("classId", classId);
  query.setString("semester", semester);
  
  List sc = query.list();

用这样的方式可以解决问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值