public boolean findUserInfo(String loginCode){
      final Object[] args = new Object[]{loginCode};
          //如果是汉字 下面这句话能查出结果
      //List list = getHibernateTemplate().find("from UserInfoVo  where loginCode = '"+loginCode+"');
          //如果是汉字 下面这句话不能查出结果
      List list = getHibernateTemplate().find(" from UserInfoVo  where loginCode = ?,args);
      return list.size() > 0;
     }    问题 : 上面所标注的红色字段

解决方案 »

  1.   

    首先  我不是用的web  就是用main函数测试的
      

  2.   

    可能是字符串在SQL中需要加 ''来标记,在HQL中同样需要这样
      

  3.   

    还有就是  我用save添加一条记录 如果有汉字 则为乱码 
    比如
             UserInfoVo vo = new UserInfoVo();
            vo.setLoginCode("点对点");
            vo.setName("点对点点对点");
            vo.setPassword("123");
            getHibernateTemplate().save(vo);
    插入的记录也会为乱码
      

  4.   

    数据库编码看一下,设为utf-8!看一下配置!
      

  5.   

    数据库编码  没影响  我直接用hibernate来插入数据  又没乱码
    我真搞求不懂了
    Configuration cfg = new Configuration().configure();
          SessionFactory sf = cfg.buildSessionFactory();
          Session session = sf.openSession();
          System.out.println((session == null));
          String loginCode = "点对点";
          String name = "点对点点对点";
          UserInfoVo vo = new UserInfoVo();
          vo.setLoginCode(loginCode);
          vo.setName(name);
          vo.setPassword("123");
          session.save(vo);
      

  6.   

    可以看一下打印的sql语句,看是否有乱码??
      

  7.   

    打印出来没有乱码的
    用System.out.println打  没什么问题呢
      

  8.   

    我也遇到这样的问题了,以前的经验告诉我,在数据库连接的时候要加字符参数;尽量不要使用gbk等的编码,最好全部使用utf8.
      

  9.   

    你用的什么数据库啊?
    我用mysql的时候就遇到过,是安装时编码方式的问题,安装时把编码方式设为gbk就行了,在mysql中好像有默认的,与安装的不一致会有乱码啊
    要是oracle或sqlserver我就不知道了,因为没遇到过啊
      

  10.   

    数据库编码不一致,最好都改为UTF-8
      

  11.   

    我也遇到相同问题 
    应该不是数据库问题吧 我直接用pl/sql在数据库直接插入带有中文的语句都可以
    而通过hibernate的save方法就不可以了 这是什么情况呢?