Java,将可序列化对象转换(转换)为其他对象

时间:2011-09-29 14:17:39

标签: java hibernate serialization

我正在使用Session.save()方法(在Hibernate中)来保存我的实体对象,这些对象返回类型为java.io.Serializable的对象。

返回的值是实体生成的主键。

生成的主键的类型为long(或bigint)。

问题是:如何将返回值转换或转换为long

Serializable result = session.save(myEntityObject);

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

6 个答案:

答案 0 :(得分:7)

尝试将结果(因为它不是原始数据)转换为Long而不是long

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

答案 1 :(得分:1)

尝试

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

答案 2 :(得分:1)

您是否尝试过使用调试器并在该行中断开以查看“结果”究竟是什么?

可能是BigDecimal或Long或......

或者,你不能只是在对象上调用主键getter方法 - 我希望它会被那个点设置。

HTH, 克里斯

答案 3 :(得分:0)

请尝试使用long r = ((Long) result).getLong()

答案 4 :(得分:0)

你应该指定你得到的错误类型!无论如何这应该有用..

long r = Long.valueOf(result) 

答案 5 :(得分:0)

以上答案对我不起作用。

我误解了statelessSession.get(...)的功能。 如果第二个参数是primary-key键,则它应该是non-composte的原始值。

如果实体具有复合键,则应将实体本身(带有填充的pk)作为第二个参数传递。

我很困惑,因为我认为我必须始终将一个实体作为第二个参数传递给statelessSession.get(因为它适用于多键实体)。