2013-06-18 18 views
17

Nawet jestem odlewania przedmiotów do int, ale to wyjątek występuje ...java.lang.ClassCastException: java.lang.Long nie mogą być oddane do java.lang.Integer w Java 1.6

Właściwie moja Hibernate- metoda JPA był Zwróć obiekt to jestem przekształcenie tego obiektu do int ...

słychać jest mój kod Hiberanate ..

@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(); 
} 

teraz jestem konwersji ten obiekt jako int ..

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

jestem przekształcania obiektu do Integer ... słychać żadnego problemu

Proszę mi pomóc ...

+0

Wygląda na to, że getAttendanceList zwraca Ci Long. Czy możesz opublikować kod dla tego samego – zerocool

+0

Czy na pewno chcesz zwrócić liczbę całkowitą? ClassCastException mówi, że nie zwracasz liczby całkowitej ... –

+0

Tak ... chcę zapisać wartość zwracaną metody getAttendanceList() w k. wtedy nadchodzi tylko ClassCastException, a teraz wlewam do (Integer), ale znowu ten wyjątek przychodzi .. – SWEE

Odpowiedz

34

przeznaczenie:

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

zamiast.

Metoda .intValue() jest zdefiniowana w klasie Number, która rozciąga się na Long.

+0

Ale IDE pokazuje ... Metoda intValue() jest niezdefiniowana dla typu Object – SWEE

+2

Dlaczego nie używać '((Number) userService. getAttendanceList (currentUser)). intValue(); ' – johnchen902

+0

@ user2496295 zobacz moją edycję, zapomniałem" Long "obsada – fge

3

Liczba wyników może (teoretycznie) być większa niż zakres liczby całkowitej. Chciałbym zmienić kod i pracować z zwracaną długą wartością.

Powiązane problemy