2011-03-21 52 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集合。