我想在hibernate中进行中文查询
比如from Test t where t.Name="张三"
控制台就输出找不到
然后看它的查询代码就是 where t.Name=???
试了将中文转换
String str=new String(("张三").getBytes("iso-8859-1"),"gb2312");
from Test t where t.Name='"+str+"'"也还是一样的
哪位知道要怎么搞?

解决方案 »

  1.   

    你确定数据库的编码是iso-8859-1吗?
      

  2.   

    Hibernate3.0以下版本可能会出现此问题,但3.0及以上版本就不会出现此问题了,
    解决此问题的办法:
      Query query=session.createQuery("from Test t where t.Name=:name");
      query.setString("name","张三");你试试。
    如果还不对,希望贴出更多的错误!
      

  3.   

    控制台就是那么显示的;
    他用?代表字段的值;
    你插入一个数据,比如session.save(对象);
    然后,看看里面是不是乱码;
    控制台不显示值滴`~~~
      

  4.   


    喷血,那是命名搜索..........
    楼主是设show_sql为true;
    然后问为什么控制台为什么显示的语句中where name = ?
    叹气...
      

  5.   

    我搞定了   
    是Hibernate进行查询的时候不能直接用query=session.CreateQuery("from Test t where t.Name like '%张三%'");
    而要query=session.CreateQuery("from Test t where t.Name like ?");
    query.setParameter(0,"%张三%")
      

  6.   

    不知道就别说话,没人说你!Hibernate版本不同确实有此问题!自己查查吧!楼主不是也试成功了吗?
    喷你的血去吧!