Come altri hanno già detto:il driver mappa tutto su BigDecimal, anche se è definito come NUMBER(38) (che potrebbe essere mappato su BigInteger)
Ma è abbastanza facile scoprire cosa mappa il driver. Basta fare un getObject() sulla colonna del ResultSet e vedere quale classe ha generato il driver.
Qualcosa come:
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()); }