CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

Hibernate怎么查询不到中文呢

楼主hyn2005(2006没有失望)2006-07-18 15:39:42 在 Java / Web 开发 提问

public   List   search(GuestBook   gb,String   KeyWord,String   isadmin){  
  session=   HSF.currentSession();  
   
  System.out.println("开始搜索");  
                  //Transaction表示一组对DB的交易  
                    tx   =   session.beginTransaction();  
                  Query   query   =   session.createQuery("from   LeaveWord   l   where   l.ID   in   ("+gb.getIds()+")   and   l.levwTitle   like   '%"    
                    +KeyWord+"%'   and   ifShow   in   (0"+isadmin+")   order   by   levwDate   desc");  
                    System.out.println(query);  
                    System.out.println(query);  
                    List   lwList   =null;  
                    try   {  
  lwList=query.list();  
   
  System.out.println("已经查找到了留言LIST");  
  }   catch   (HibernateException   e)   {  
  e.printStackTrace();  
  }  
                    Iterator   iterator   =     lwList.iterator();  
                        while(iterator.hasNext())   {  
                                  }  
  return   lwList;  
  }  
   
  高手请帮我看看这个方法,为什么能够查询到字母和数字,却查询不到中文的呢?谢谢了 问题点数:20、回复次数:19Top

1 楼hyn2005(2006没有失望)回复于 2006-07-18 15:53:53 得分 0

高手快救救我吧,要不我就死定了Top

2 楼loverface(双面人)回复于 2006-07-18 16:08:33 得分 0

代码格式真乱,看得头晕.  
  检查下你的KeyWord里的中文正常吗?是不是乱码?是的话转一下码就OK啦.Top

3 楼hyn2005(2006没有失望)回复于 2006-07-18 16:14:17 得分 0

不是乱码。那我在帖一次  
  public   List   search(GuestBook   gb,String   KeyWord,String   isadmin){  
  session=   HSF.currentSession();  
   
  System.out.println("开始搜索");  
                  //Transaction表示一组对DB的交易  
                    tx   =   session.beginTransaction();  
                  Query   query   =   session.createQuery("from   LeaveWord   l   where   l.ID   in   ("+gb.getIds()+")   and   l.levwTitle   like   '%"   +KeyWord+"%'   and   ifShow   in   (0"+isadmin+")   order   by   levwDate   desc");  
                     
                    System.out.println(query);  
                    System.out.println(query);  
                    List   lwList   =null;  
                    try   {  
  lwList=query.list();  
   
  System.out.println("已经查找到了留言LIST");  
  }   catch   (HibernateException   e)   {  
  e.printStackTrace();  
  }  
  //                   Iterator   iterator   =     lwList.iterator();  
  //                   while(iterator.hasNext())   {  
  //                             }  
  return   lwList;  
  }  
  Top

4 楼hyn2005(2006没有失望)回复于 2006-07-18 16:17:17 得分 0

呵呵,只能这样了帮帮忙啦Top

5 楼ddystar()回复于 2006-07-18 16:33:33 得分 0

注意编码格式一致Top

6 楼hyn2005(2006没有失望)回复于 2006-07-18 16:37:03 得分 0

谢谢批评指导,但是我把他粘上之后才这样的呀,原谅我吧Top

7 楼loverface(双面人)回复于 2006-07-18 16:55:03 得分 0

不会吧,不是乱码应该可以查出来的吧!!  
  你把KeyWord打印出来看看是什么.Top

8 楼GavinLau(枫)回复于 2006-07-18 16:58:20 得分 0

我也遇到了这个问题,where   条件里有中文查不出来,后来我用JDBC写了个查询语句,就能够查出来  
  rs=stmt.executeQuery("select   *   from   auditbook     where   docname   Like   '%借阅%'");  
   
  编码绝对是没有,可就是查不出来,关注......Top

9 楼spiritsl(梦雨心蓝)回复于 2006-07-18 17:02:05 得分 0

有全角和半角之分Top

10 楼hyn2005(2006没有失望)回复于 2006-07-18 17:07:42 得分 0

全角和半角?那么如何判断用户的输入法是全角还是半角?该怎么解决呢?Top

11 楼GavinLau(枫)回复于 2006-07-18 17:17:22 得分 0

跟半角全角没多大关系吧  
  Object   []   parameter={%+"郁闷"+%};  
  String   hql="from   table   as   t   where   t.name   like   ?";  
  this.getHibernateTemplate().find(hql,parameter);  
  Top

12 楼loverface(双面人)回复于 2006-07-18 17:17:23 得分 10

文字应该没有全角和半角之分吧,符号才有  
  Query   query   =   session.createQuery("from   LeaveWord   l   where   l.ID   =   :id   and   l.levwTitle   like   :keyword   ");  
  query.setParameter("id",gb.getIds());  
  query.setParameter("keyword","%"+params+"%");  
  改成这样试试Top

13 楼GavinLau(枫)回复于 2006-07-18 17:18:19 得分 10

this.getHibernateTemplate().find("   from   table   as   t   where   t.name   like   ?",new   Object[]   {"不郁闷"},   new   Type[]   {Hibernate.STRING});  
  用这个Top

14 楼loverface(双面人)回复于 2006-07-18 17:25:36 得分 0

嗯,反正就这个意思,不要直接并HQL,这样会有BUG的Top

15 楼hyn2005(2006没有失望)回复于 2006-07-18 17:28:35 得分 0

我去试试,先谢谢你们大家了Top

16 楼sundeveloper(51TTUP)回复于 2006-07-18 17:56:53 得分 0

这样是可以的:  
   
      将关键字转成iso8859-1,,再去查..   new   String("关键字".getBytes("GBK"),"iso8859_1");Top

17 楼hyn2005(2006没有失望)回复于 2006-07-18 17:57:17 得分 0

不知道怎么回事,现在报错了:  
  org.hibernate.hql.ast.QuerySyntaxError:   unexpected   AST   node:    
  (   [from   com.xaoer.dowebsite.gBook.Beans.LeaveWord   l   where   l.ID   in   (0,77,117)     and   l.levwTitle   like   :keyword   order   by   levwDate   desc],  
  为什么keyword参数没有替换掉呢?还请大家多多帮忙了Top

18 楼hyn2005(2006没有失望)回复于 2006-07-18 18:06:41 得分 0

to   :   sundeveloper(51TTUP),不可以呀,我用的是UTF-8的编码Top

19 楼hyn2005(2006没有失望)回复于 2006-07-18 19:06:51 得分 0

终于解决了,就向你们所说的,不能并接HQL,谢谢你们了,给分Top

相关问题

关键词

得分解答快速导航

  • 帖主:hyn2005
  • loverface
  • GavinLau

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo