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

无法强制转换为java.io.Serializable,java,hibernate,criteria,Java,Hibernate,Criteria,我目前正在使用条件来检索用户的详细信息,但是当试图用正确的用户查询details对象时,我得到了一个ClassCastException 我的准则代码 Criteria criteria = sess.createCriteria(UserDetails.class) criteria.add(Restrictions.eq("user.id", user.id)); 我也试过使用 Criteria criteria = sess.createCriteria(UserDetails.clas

我目前正在使用条件来检索用户的详细信息,但是当试图用正确的用户查询details对象时,我得到了一个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轻松解决这个问题,但是还有其他解决方案吗?

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

你应该实现
Serializable
接口。

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


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

对我来说,问题是在使用非pk关系时Hibernate中出现的错误:


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

为什么您不想实现Serializable?我觉得有一个更好的方法来解决这个问题,您检查了这个链接:Externalizable扩展了Serializable,所以您最终可以以任何方式实现Serializable。@Juha Syrjälä显然,但这并不是相同的解决方案。你必须做更多的工作。在我的例子中,这是一个
manytone
映射,它在一个查询中有多个结果,从而生成
ClassCastException
。Hibernate在
实现Serializable
后创建了一个适当的异常。在我的情况下,接口使它工作,但我不想在使用Hibernate封送/解封时添加它。我尝试了实现,一切正常。虽然我不明白为什么需要它,因为其他实体在没有实现
Serializable
的情况下运行良好。OP正在寻求另一种解决方案。这节省了我的时间,我现在不需要找到任何其他方法:)这是解决问题的方法还是只是抑制错误?抱歉,我是SpringJPA新手,正在尝试使用非主键连接表。