为什么hql语句当查询条件为中文时查不出结果,英文就可以

时间:2022-07-10 23:48:04
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语句在数据库里能够查询出结果

13 个解决方案

#1


数据库是什么,反正mysql这个问题比较多

#2


会不会是编码问题?

#3


这个应该是乱码的问题。

#4


估计是你的中文在传入数据库之前乱码了

#5


jdbc:mysql://172.16.9.6:3306/school?useUnicode=true&characterEncoding=UTF-8
配置文件中的url加上编码,一般mysql这种问题很多!

#6


引用 5 楼 renshaoyun 的回复:
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',试试看能不能解决

#7


上面的方法都试过了,还是不行!

#8


引用 6 楼 xlxiongliang 的回复:
Quote: 引用 5 楼 renshaoyun 的回复:

jdbc:mysql://172.16.9.6:3306/school?useUnicode=true&amp;characterEncoding=UTF-8
配置文件中的url加上编码,一般mysql这种问题很多!

这个正解,然后把tomcat安装目录下的conf文件夹下的server.xml文件中的    
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443">加上URIEncoding='utf-8',试试看能不能解决

试过了,还是不行啊 为什么hql语句当查询条件为中文时查不出结果,英文就可以

#9


你的查询条件是从前台传过来的的吧  取值的时候就已经乱码了 ,看看jsp的编码和  tomcat的编码是否一致。

#10


你把SQL语句输出来看一下,到底查的是什么

#11


你的数据库表的编码是什么,赶紧查一下,必然是编码问题

#12


把sql语句输出。自己到库里试试。

#13


把tomcat安装目录下的conf文件夹下的server.xml文件中的    
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443">加上URIEncoding='utf-8'
我也是这样解决的

#1


数据库是什么,反正mysql这个问题比较多

#2


会不会是编码问题?

#3


这个应该是乱码的问题。

#4


估计是你的中文在传入数据库之前乱码了

#5


jdbc:mysql://172.16.9.6:3306/school?useUnicode=true&amp;characterEncoding=UTF-8
配置文件中的url加上编码,一般mysql这种问题很多!

#6


引用 5 楼 renshaoyun 的回复:
jdbc:mysql://172.16.9.6:3306/school?useUnicode=true&amp;characterEncoding=UTF-8
配置文件中的url加上编码,一般mysql这种问题很多!

这个正解,然后把tomcat安装目录下的conf文件夹下的server.xml文件中的    
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443">加上URIEncoding='utf-8',试试看能不能解决

#7


上面的方法都试过了,还是不行!

#8


引用 6 楼 xlxiongliang 的回复:
Quote: 引用 5 楼 renshaoyun 的回复:

jdbc:mysql://172.16.9.6:3306/school?useUnicode=true&amp;characterEncoding=UTF-8
配置文件中的url加上编码,一般mysql这种问题很多!

这个正解,然后把tomcat安装目录下的conf文件夹下的server.xml文件中的    
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443">加上URIEncoding='utf-8',试试看能不能解决

试过了,还是不行啊 为什么hql语句当查询条件为中文时查不出结果,英文就可以

#9


你的查询条件是从前台传过来的的吧  取值的时候就已经乱码了 ,看看jsp的编码和  tomcat的编码是否一致。

#10


你把SQL语句输出来看一下,到底查的是什么

#11


你的数据库表的编码是什么,赶紧查一下,必然是编码问题

#12


把sql语句输出。自己到库里试试。

#13


把tomcat安装目录下的conf文件夹下的server.xml文件中的    
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443">加上URIEncoding='utf-8'
我也是这样解决的