2010-08-17 78 views

回答

10

正如其他人已經說過:驅動器映射一切爲BigDecimal,即使它被定義爲NUMBER(38)(它可以映射到的BigInteger)

但它是很容易找出的驅動程序映射。只需在ResultSet的列上執行getObject()並查看驅動程序生成的類。

喜歡的東西:

 
ResultSet rs = statement.executeQuery("select the_number_column from the_table"); 
if (rs.next()) 
{ 
    Object o = rs.getObject(1); 
    System.out.println("Class: " + o.getClass().getName()); 
}
1

已經有一段時間了,但我相信它是Java中的BIGINT。 這是BigDecimal。我記得你遇到的classcastexception會給你一個提示...

+0

你會認爲'ClassCastException'會有所幫助,但在這種情況下,我們使用Hibernate來執行查詢和方法返回'Object'。 – 2010-08-17 16:11:31

+0

在http://stackoverflow.com/questions/3504751/what-object-type-does-spring-hibernate-template-execute-method-return-for-a-count,我問一個更具體的問題,我們的具體情況它使用Spring Hibernate Template。 – 2010-08-17 16:34:05

2

根據the Oracle documentation它是java.math.BigDecimal


「但我的演員爲BigDecimal拋出一個 ClassCastException異常」

您是否嘗試過使用oracle.sql.NUMBER

+0

這就是我的想法,但是我轉換爲'BigDecimal'會拋出'ClassCastException'。 – 2010-08-17 16:16:38

+0

根據該表,雖然Oracle數據類型始終爲'NUMERIC',但JDBC數據類型取決於對於INTEGER或SMALLINT的底層SQL數據類型是int。 – 2010-08-17 16:20:54

+0

我會檢查類型找出。 – 2010-08-17 16:34:46

相關問題