2010-08-17 47 views

Trả lời

10

Như những người khác đã nói: trình điều khiển bản đồ tất cả mọi thứ để BigDecimal, ngay cả khi nó được định nghĩa như NUMBER (38) (có thể được ánh xạ tới BigInteger)

Nhưng nó khá dễ dàng để tìm hiểu những gì các bản đồ tài xế. Chỉ cần thực hiện getObject() trên cột của ResultSet và xem lớp trình điều khiển được tạo ra.

Cái gì như:

 
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

Đã lâu rồi, nhưng tôi tin rằng đó là BIGINT trong Java. Đó là BigDecimal. Tôi nhớ rằng bạn sẽ gặp phải vấn đề về lớp học mà bạn gặp phải ...

+0

Bạn sẽ nghĩ rằng 'ClassCastException' sẽ giúp đỡ, nhưng trong trường hợp này, chúng tôi sử dụng Hibernate để thực hiện truy vấn và phương thức trả về' Object'. –

+0

Tại http://stackoverflow.com/questions/3504751/what-object-type-does-spring-hibernate-template-execute-method-return-for-a-count, tôi đặt câu hỏi cụ thể hơn cho trường hợp cụ thể của chúng tôi trong đó sử dụng Spring Hibernate Template. –

2

Theo số the Oracle documentationjava.math.BigDecimal.


"nhưng dàn diễn viên của tôi để BigDecimal ném một ClassCastException "

Bạn đã cố gắng sử dụng oracle.sql.NUMBER?

+0

Đó là những gì tôi nghĩ, nhưng diễn viên của tôi để 'BigDecimal' ném một' ClassCastException'. –

+0

Theo bảng đó, mặc dù kiểu dữ liệu Oracle luôn luôn là 'NUMERIC', kiểu dữ liệu JDBC phụ thuộc vào kiểu dữ liệu SQL cơ bản cho' INTEGER' hoặc 'SMALLINT', sẽ là' int'. –

+0

Tôi sẽ kiểm tra loại để tìm hiểu. –

Các vấn đề liên quan