为什么hql语句当查询条件为中文时查不出结果,英文就可以
hql语句当查询条件为中文时查不出结果,英文就可以。用setParameter()方法也没有解决,字符编码格式全都改为utf-8了,还是不行,求指导!
String hql="from "+this.clazz.getName()+" where username=? and role=?";
Query query=this.sessionFactory.getCurrentSession().createQuery(hql);
query.setParameter(0, username);
query.setParameter(1, role);
User u=(User)query.uniqueResult();
System.out.println(u);
System.out.println(hql);
输出的hql语句在数据库里能够查询出结果
------解决方案--------------------数据库是什么,反正mysql这个问题比较多
------解决方案--------------------会不会是编码问题?
------解决方案--------------------这个应该是乱码的问题。
------解决方案--------------------估计是你的中文在传入数据库之前乱码了
------解决方案--------------------jdbc:mysql://172.16.9.6:3306/school?useUnicode=true&characterEncoding=UTF-8
配置文件中的url加上编码,一般mysql这种问题很多!
------解决方案--------------------
这个正解,然后把tomcat安装目录下的conf文件夹下的server.xml文件中的
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443">加上URIEncoding='utf-8',试试看能不能解决
------解决方案--------------------你的查询条件是从前台传过来的的吧 取值的时候就已经乱码了 ,看看jsp的编码和 tomcat的编码是否一致。
------解决方案--------------------你把SQL语句输出来看一下,到底查的是什么
------解决方案--------------------你的数据库表的编码是什么,赶紧查一下,必然是编码问题
------解决方案--------------------把sql语句输出。自己到库里试试。