无法强制转换为java.io.Serializable

时间:2010-12-24 08:45:18

标签: java hibernate criteria

我目前正在使用条件来检索用户的详细信息,但在尝试使用正确的用户查询详细信息对象时,我得到了ClassCastException。

我的标准代码;

Criteria criteria = sess.createCriteria(UserDetails.class)
criteria.add(Restrictions.eq("user.id", user.id));

我也尝试过使用;

Criteria criteria = sess.createCriteria(UserDetails.class)

Criteria subCriteria = criteria.createCriteria("user");
subCriteria.add(Restrictions.eq("id", user.id));

两者都给我ClassCastException。我知道我可以通过让用户实现Serializable来轻松解决它,但还有其他解决方案吗?

4 个答案:

答案 0 :(得分:14)

您应该实现Serializable界面。

答案 1 :(得分:11)

我的经验是这样的。我有一系列父/子关系在工作。然后,我被迫重构。在此过程中,我无法正确更新所有注释。那是我开始接收转换为Serializable错误的时候。我实现了Serializable,这暴露了真正的问题。一切正常后,我就能删除Serializable。

因此,在回答您的问题时,真正的问题可能出在您的设置中,而Hibernate正试图通过序列化某些实体来解决问题。尝试暂时实现Serializable以公开问题,然后将其删除。

答案 2 :(得分:10)

对我来说,问题是使用非PK关系时Hibernate中的一个错误:https://hibernate.atlassian.net/browse/HHH-7668

作为一种解决方法,我实现了Serializable,异常消失了

答案 3 :(得分:4)

唯一的其他解决方案是实现Externalizable。