2013-06-18 24 views
17

Thậm chí tôi đang truyền Object vào int, Nhưng ngoại lệ này xảy ra ...java.lang.ClassCastException: java.lang.Long không thể được đưa vào java.lang.Integer trong java 1.6

Thực ra Hibernate- phương pháp JPA là đối tượng trở lại sau đó tôi đang chuyển đổi mà Object vào int ...

Nghe là mã Hiberanate tôi ..

@Transactional 
public Object getAttendanceList(User user){ 

    Query query = entityManager.createQuery("select Count(ad) from AttendanceDemo ad inner join ad.attendee at where at.user=:user", 
      Long.class); 
    query.setParameter("user", user); 
    return query.getSingleResult(); 
} 

Bây giờ tôi đang chuyển đổi đối tượng này như int ..

int k = (Integer) userService.getAttendanceList(currentUser); 

tôi đang chuyển đổi đối tượng để Integer ... nghe bất kỳ vấn đề

Xin hãy giúp tôi ...

+0

Có vẻ như getAttendanceList đang trả lại cho bạn Dài. Bạn có thể đăng mã cho cùng một số – zerocool

+0

Bạn có chắc là bạn đang trả về một số nguyên không? ClassCastException nói rằng bạn không trả về một số nguyên ... –

+0

Có .. tôi muốn lưu giá trị trả về getAttendanceList() vào k. sau đó chỉ ClassCastException đến và bây giờ tôi đang đúc đến (Integer) nhưng một lần nữa ngoại lệ đến .. – SWEE

Trả lời

34

Sử dụng:

((Long) userService.getAttendanceList(currentUser)).intValue(); 

để thay thế.

Phương pháp .intValue() được xác định trong lớp Number, trong đó Long mở rộng.

+0

Nhưng IDE cho thấy ... Phương thức intValue() là không xác định đối với kiểu Object – SWEE

+2

Tại sao không sử dụng '((Số) userService. getAttendanceList (currentUser)) intValue(); ' – johnchen902

+0

@ user2496295 xem chỉnh sửa của tôi, tôi quên' Long' cast – fge

3

Số lượng kết quả có thể (theo lý thuyết) lớn hơn phạm vi của một số nguyên. Tôi sẽ cấu trúc lại mã và làm việc với giá trị trả về dài thay thế.

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