异常信息
确认一下建表语句中字段类型是NUMBER, 对应java中的类型是Bigdecimal 以下代码抛类型转换异常
BigInteger obj = (BigInteger) countQuery.getSingleResult(); long total = obj.longValue();
修改为
String scount = countQuery.getSingleResult().toString();
Long total = Long.valueOf(scount);
感谢
地址:
http://otndnld.Oracle.co.jp/document/products/oracle10g/102/doc_cd/Java.102/B19275-03/datacc.htm#BHCJBJCC
SQL数据类型 | JDBC类型代码 | 标准的Java类型 | Oracle扩展的Java类型 |
---|---|---|---|
1.0标准的JDBC类型: |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.0标准的JDBC类型: |
|||
|
|
|
|
|
|
|
|
用户定义的对象 |
|
|
|
用户定义的参考 |
|
|
|
用户定义的集合 |
|
|
|
Oracle扩展: |
|||
|
|
N/A |
|
|
|
N/A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
数据库中为number类型的字段,在Java类型中对应的有Integer和BigDecimal都会出现;
经测试发现当数据库为sql server和DB2时,用getObject()取出来时Integer类型,但是Oracle 中取出来就会是Integer或者BigDecimal类型。原因是oracle与java类型对应于number长度有关。
遇到该类型问题,若要判断每个数据库和数据库字段长度不同对应的java数据类型不同太过烦琐,可采用getString()来取值,统一先转为string来判断
另外附上
java.sql.Types,数据库字段类型,java数据类型的对应关系
http://www.cnblogs.com/shishm/archive/2012/01/30/2332142.html