2013-06-18 30 views
17

即使我正在鑄造對象轉換成int,但是這個例外發生...java.lang.ClassCastException:java.lang.Long中不能轉換爲java.lang.Integer的在Java 1.6

其實我Hibernate- JPA方法是返回對象那麼我將那個對象轉換成int ...

聽到的是我的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(); 
} 

現在我將這個對象爲INT ..

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

即時轉換對象整數......聽到任何問題

請幫我...

+0

看起來像getAttendanceList正在返回你長。你可以發佈相同的代碼 – zerocool

+0

你確定你要返回一個Integer嗎? ClassCastException表示您沒有返回整數... –

+0

是的。我想將getAttendanceList()方法的返回值存儲到k中。那麼只有ClassCastException來了,現在我正在轉換爲(Integer),但是再次出現異常。 – SWEE

回答

34

用途:

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

代替。

.intValue()方法在類Number中定義,其中Long擴展。

+0

但IDE顯示...方法intValue()未定義類型對象 – SWEE

+2

爲什麼不使用'((Number)userService。 getAttendanceList(currentUser))。intValue();' – johnchen902

+0

@ user2496295看到我的編輯,我忘了'長'鑄 – fge

3

結果的數量可以(理論上)大於整數的範圍。我會重構代碼並使用返回的長整型值。

相關問題