2011-03-21 50 views
4

hibernate命名查询返回数据类型为NUMBER的列的BigDecimal。休眠状态返回BigDecimal数据类型而非长时间

select col1 as "col1" from table1 union select col2 as "col1" from table2 

在客户端,我希望COL1的数据类型为长(原始) 我这样做:

<return-scalar column="col1" type="java.lang.Long" /> 

<return-scalar column="col1" type="long" /> 

在这两种情况下,我得到:

java.lang.ClassCastException: java.math.BigDecimal incompatible with java.lang.Long 

H我能解决这个问题吗?我的怀疑,别名出了什么问题?

+0

您使用的是Oracle吗? Oracle NUMBERtype映射到BigDecimal。 – 2011-03-21 16:01:43

+1

是的。 Oracle 10g。如何转换为长? – Victor 2011-03-21 16:02:22

回答

4

默认情况下,Oracle NUMBER在Hibernate中映射到BigDecimal。尝试将类型设置为BigDecimal。

+0

也许我不清楚有问题。也许你读得不好。 的目的是覆盖Hibernate中的默认BigDecimal – Victor 2011-03-21 17:43:03

1

是的,Hibernate将Oracle数字类型映射到Java中的BigDecimal。 由于Java中的BigDecimal计算代价高昂,一旦您在Java中获得BigDecimal,请根据您的数据大小编写一个实用程序,将BigDecimal Collection转换为Integer或Long集合。