最近我在使用createSQLQuery()方法时候发现有两个问题,在此提出来希望大家遇到的时候节省大家时间
第一个:No Dialect mapping for JDBC type :-X hibernate的错误,X代表的是数字
我目前遇到的是org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
没有能够和text类型对应的java类型
网上的各位都说,出现这个原因是说服务器端的数据类型并不能和Java的相应的数据类型成功映射
解决办法参考:注册新的类型映射
具体请参考下面这位仁兄解答
http://blog.csdn.net/xd195666916/archive/2010/03/26/5419316.aspx
关于mysql数据类型与java数据类型对照:
http://hi.baidu.com/lilingqhd/blog/item/dfab391293b03c0b5baf5348.html
第二个:hibernate中用createSQLQuery方法查询,返回的list用object[]接收,
遍历取值发现object[i]输出值是只有一位。这个问题具体原因尚不清楚,但是和数据库方言有关
我在mysql数据库中目前遇到的是,数据库中sum求和输出的数值例如189只能输出1后面两位不见了
加班的时候好不容易才发现这个问题,浪费很多时间,我一直以为sql错误
解决方法参考:指定输出数据的类型addScalar("数据库字段名",Hibernate.输出类型).
具体请参考下面这位仁兄解答
http://blog.csdn.net/dream8062/archive/2009/10/30/4748422.aspx
网上基本都是说使用DB2数据库的时候出现char型输出只有一位,呵呵,中国有钱的单位真是多,DB2运用这么广泛吗?
其实这个我以前在使用oracle数据库也遇到过类似情况,就是数据库里面的timestamp类型使用createSQLQuery()方法查询出来的时候发现只有日期(年月日),当时的解决方法是直接在sql中把日期转成字符串输出
具体产生这种情况原因,还需要达人帮助解答一下?