今天做一个例子,出现了这样的情况,数据库有一个字段:busiType char(2)类型
查询的代码如下:
String hql = "select count(*) from BZJ_BUSIACC a inner join a.BZJZTB d join a.BUSITB c where c.BUSI_TYPE=:busiType ";
Query query = session.createQuery(hql).setParameter("busiType", "2");
这样查询出来是查不出结果的,在网上找了一下,也没找到答案,突然发现数据库定义的长度是char(2)是定长,而里面的值是2,只有1个长度,所以查不出来,后来我把输入的参数"2"改成"2 ",也就是2后面加一个空格,果不其然就能查出来了,看样子还是数据库设计的有问题。
查询的代码如下:
String hql = "select count(*) from BZJ_BUSIACC a inner join a.BZJZTB d join a.BUSITB c where c.BUSI_TYPE=:busiType ";
Query query = session.createQuery(hql).setParameter("busiType", "2");
这样查询出来是查不出结果的,在网上找了一下,也没找到答案,突然发现数据库定义的长度是char(2)是定长,而里面的值是2,只有1个长度,所以查不出来,后来我把输入的参数"2"改成"2 ",也就是2后面加一个空格,果不其然就能查出来了,看样子还是数据库设计的有问题。
解决方案 »
- 为什么封我号的回帖权,而且一句原因都没有,请版主或管理员给个答复。~~~~
- CXF 资料
- 关于一个J2EE架构体现的问题···
- java调用webservices问题
- 有关tomcat5.5中的admin模块安装的问题.
- 大侠们你们开发J2EE用是都是什么平台呀?我用的是WIN2003+JBuilder
- 有关hibernate的多对多关系中session.update没法使用的情况
- EJB的HELLOW简单程序错误,HELP!!!!
- 100分=jsp/servlet + SessionBean + EntityBean + SQL
- struts2参数接收问题ModelDriven
- 菜鸟求助!!关于eclipse连sql server 2005 编程的问题!!
- 课程设计中Swing编程的问题
用char呢、如果你定义的长度是2那么你保存的时候、存的是"2"
但是入库后呢、数据库会自动用空格填充、让它满足Length!如果超出肯定会报错的!
也就是"2 "!
当你去查询的时候、select * from Table WHERE 字段="2"!
这样很明显! "2 "跟"2"是不会相等的嘛!!!
如果你用的是varchar的话、他不管你存储的字符的长度是否满足!
它不会给你填充了!
用varchar(2)就可以偶一直用varchar