2011-09-29 108 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

有关主键的很好的一点。 –