我在学用struts1.2+spring1.2+hibernate3.1做项目
一直没用过中文做为hql的查询条件
今天就碰到如题的问题了,如下:
from Members  where 1=1 and memSex ='男'
Hibernate: select count(*) as col_0_0_ from MEMBERS members0_ where 1=1 and members0_.MEM_SEX='??'
Hibernate: select * from ( select members0_.MEM_ID as MEM1_, members0_.MEM_STATE as MEM2_1_, members0_.MEM_ACCOUNT as MEM3_1_, members0_.MEM_PASSWORD as MEM4_1_, members0_.MEM_NAME as MEM5_1_, members0_.MEM_SEX as MEM6_1_, members0_.MEM_BIRTHDAY as MEM7_1_, members0_.MEM_PHONE as MEM8_1_, members0_.MEM_ADDRESS as MEM9_1_, members0_.MEM_DATE as MEM10_1_, members0_.MEM_INFO as MEM11_1_, members0_.MEM_PHOTO as MEM12_1_ from MEMBERS members0_ where 1=1 and members0_.MEM_SEX='??' ) where rownum <= ?高手帮解决一下吧
谢谢

解决方案 »

  1.   

    这种男女、已婚未婚之类的属性,建议在类中通过public static final int NAN = 1;来表述。这样from Members  where 1=1 and memSex =?    find(sql,new Object[]{class.NAN})  就可以了,这样可以避免转码的繁琐,而且管理起来还方便。
      

  2.   

    是用mysql吗?检查一下数据库的字符集是否为GBK
      

  3.   

    这个应该是典型的乱码问题,不是转成SQL的问题吧
      

  4.   

    谢谢各位
    我查了点资料
    发现这道先可能是hibernate 的jar包引起的
    将3.0的换成3.1的可以解决
    若不行
    还可能带参的hql来管理而不用拼接的hql
    可以解决
    二楼的思路是比较好的一种方法