2010-08-17 11 views

Respuesta

10

como ya se ha dicho: el conductor mapas de todo para BigDecimal, incluso si se define como el número (38) (que podría ser asignada a BigInteger)

Pero es bastante fácil de averiguar cuáles son los mapas de determinantes. Simplemente haga un getObject() en la columna del ResultSet y vea qué clase generó el controlador.

Algo así como:

 
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

Ha pasado un tiempo, pero creo que es BIGINT en Java. Es BigDecimal. Recuerdo que la classcastexception que encontrarías daría una pista ...

+0

Uno pensaría que el 'ClassCastException' ayudaría, pero en este caso, podemos usar Hibernate para ejecutar la consulta y el método devuelve' Object'. –

+0

En http://stackoverflow.com/questions/3504751/what-object-type-does-spring-hibernate-template-execute-method-return-for-a-count, hago una pregunta más específica para nuestro caso particular que utiliza Spring Hibernate Template. –

2

De acuerdo con the Oracle documentation es java.math.BigDecimal.


"pero mi fundido a BigDecimal lanza una ClassCastException "

¿Ha intentado utilizar oracle.sql.NUMBER?

+0

Eso es lo que pensé, también, pero mi conversión a 'BigDecimal' arroja una' ClassCastException'. –

+0

Según esa tabla, aunque el tipo de datos Oracle siempre es 'NUMERIC', el tipo de datos JDBC depende del tipo de datos SQL subyacente que para' INTEGER' o 'SMALLINT', sería' int'. –

+0

Inspeccionaré el tipo para averiguarlo. –

Cuestiones relacionadas