public List getOrganizationInfoByLikeName(
String likeName) throws UnsupportedEncodingException {
     //String name = new String(likeName.getBytes("UTF-8"),"GBK");
String sql = "from OrganizationInfo org where org.name like '"+likeName+"%'";
return getHibernateTemplate().find(sql);
}
拼出来的sql条件语句字段是乱码导致查询不到记录,怎么处理?Hibernate: select organizati0_.ID as ID, organizati0_.CODE as CODE10_, organizati0_.NAME as NAME10_, organizati0_.YJ_ORGANIZATION_CODE as YJ4_10_, organizati0_.LOGIC_CODE as LOGIC5_10_, organizati0_.ORG_TYPE as ORG6_10_, organizati0_.ORG_PERIOD_TYPE as ORG7_10_, organizati0_.PARENT_ORG_ID as PARENT8_10_, organizati0_.FITECH_FILLER as FITECH9_10_, organizati0_.FITECH_CHECKER as FITECH10_10_, organizati0_.FITECH_PRINCIPAL as FITECH11_10_, organizati0_.IS_DELETED as IS12_10_, organizati0_.conver_code1 as conver13_10_, organizati0_.conver_code2 as conver14_10_, organizati0_.conver_code3 as conver15_10_, organizati0_.ORG_FLAG as ORG16_10_, organizati0_.SUM_FLAG as SUM17_10_, organizati0_.RH_ORG_CODE as RH18_10_, organizati0_.RH_LOC_CODE as RH19_10_, organizati0_.RH_SYSTEM_CODE as RH20_10_, organizati0_.RHN_ORG_CODE as RHN21_10_, organizati0_.RHN_SYSTEM_CODE as RHN22_10_ from ORGANIZATION_INFO organizati0_ where organizati0_.NAME like '????%'
SQLString乱码Hibernate

解决方案 »

  1.   

    String name = new String(likeName.getBytes("iso8859-1"),"GBK");
      

  2.   

    String name = new String(likeName.getBytes("iso8859-1"),"GBK"); 
    或者
    String name = new String(likeName.getBytes("iso8859-1"),"UTF-8"); 
    这个要看你设置的编码格式了 
    楼主的问题是中文传递乱码的问题 问题不在sql就传参的问题 楼主调试一下代码解决传参的乱码问题就好了
      

  3.   

    首先看前台和你后台的编码是一致。如果一样就可以直接传递。如果不一致则可以使用String name = new String(likeName.getBytes("iso8859-1"),"GBK");   iso8859-1代表解码规范这个看你前台是什么编码  gbk代表再次的编码规范这个就是你后台的编码了。
      

  4.   

    为什么还要把UTF-8转成GBK,统一UTF-8不是挺好?
      

  5.   

    <prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
    问题解决,同样也谢谢楼上同仁的帮忙。