oracle里存的是number类型,java查询出来的对象属性是bigdecimal类型

J2EE 码拜 10年前 (2015-04-03) 2215次浏览 0个评论
 

Oracle数据库表里是testNum number(2)
Java类里的属性是testNum int
但是我用this.getSession().createSQLQuery(sql)查询出来的结果对象里对应的属性却是bigdecimal
所以必须进行类型强转,否则报错类型转换错误。

这里该怎么处理,让从数据查询出来的数据就是int类型,而不是bigdecimal呢?谢谢。

java.lang.ClassCastException: [Ljava.lang.Object;

oracle里存的是number类型,java查询出来的对象属性是bigdecimal类型
10分
BigDecimal b = new BigDecimal(100);
int i = b.intValue();
oracle里存的是number类型,java查询出来的对象属性是bigdecimal类型
引用楼主  的回复:

Oracle数据库表里是testNum number(2)
Java类里的属性是testNum int
但是我用this.getSession().createSQLQuery(sql)查询出来的结果对象里对应的属性却是bigdecimal
所以必须进行类型强转,否则报错类型转换错误。

这里该怎么处理,让从数据查询出来的数据就是int类型,而不是bigdecimal呢?谢谢。

……

+1

oracle里存的是number类型,java查询出来的对象属性是bigdecimal类型
10分
引用 1 楼  的回复:

BigDecimal b = new BigDecimal(100);
int i = b.intValue();

+1
不好意思,眼花了

oracle里存的是number类型,java查询出来的对象属性是bigdecimal类型
10分
这个…你用oracle之前不先查一下jdbc对应字段类型的吗…
对于数值类型来说
oracle     JDBC
INTEGER -> short, int, long 是字段情况,一般用long
NUMBER -> float, doule, java.math.BigDecimal 存在小数定义下,映射为float/double,否则映射为BigDecimal
 
oracle里存的是number类型,java查询出来的对象属性是bigdecimal类型
10分
很正常的,用java查出来的就是BigDecimal型,用BigDecimal.intValue()一下就可以了。
像我们公司,计算时都是BigDecimal,double都不让用。
顺便送你个BigDecimal的计算方法
http://fengbin2005.iteye.com/blog/1122832
oracle里存的是number类型,java查询出来的对象属性是bigdecimal类型
谢谢各位了,问题没解决,现在用hibernate查询。查询出来在取或者转类型肯定可以,本来想查出来就是想要的类型,懒得转的。虽然不太喜欢hql,但是它查出来的对象是转换好的,稍微方便点。
oracle里存的是number类型,java查询出来的对象属性是bigdecimal类型
这块我也纠结了很久,最近没啥忙的看了struts2的源代码。DefaultTypeConverter这个类研究研究就明白了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明oracle里存的是number类型,java查询出来的对象属性是bigdecimal类型
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!