2011-09-29 192 views
4

我使用Session.save()方法(在Hibernate中)來保存我的實體對象,該對象返回java.io.Serializable類型的對象。Java將可序列化的對象轉換(其他對象)

返回的值是實體的生成主鍵。

生成的主鍵類型爲long(或bigint)。

問題是:我如何將返回的值轉換或轉換爲long

Serializable result = session.save(myEntityObject); 

//This line of code fails. 
long r = (long)result; 
+1

你試過'長R =((長)的結果).getLong()'? –

回答

5

嘗試鑄造的結果(因爲它不是一個原始的),以代替Longlong

Long r = (Long)result; 
long longValue = r.longValue(); 
+0

謝謝,它的工作:) –

+0

@AliRezaKhoshsirat:不客氣。 –

0

嘗試使用long r = ((Long) result).getLong()代替。

1

嘗試

long r = Long.valueOf(String.valueOf(result)).longValue(); 
+0

這是一位救世主,謝謝! – normalUser

0

你應該指定的錯誤,你所得到的類型!反正這應該工作..

long r = Long.valueOf(result) 
1

您是否嘗試過使用調試器,並打破在該行看到什麼「結果」是什麼?

這可能是BigDecimal的或長或...

另外,不能你只需要調用主鍵getter方法的對象 - 我會希望它會通過這一點來設定。

HTH, 克里斯

+0

有關主鍵的很好的一點。 –