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

Thy*_*hys 17 java hibernate criteria

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

我的标准代码;

Criteria criteria = sess.createCriteria(UserDetails.class)
criteria.add(Restrictions.eq("user.id", user.id));
Run Code Online (Sandbox Code Playgroud)

我也试过用;

Criteria criteria = sess.createCriteria(UserDetails.class)

Criteria subCriteria = criteria.createCriteria("user");
subCriteria.add(Restrictions.eq("id", user.id));
Run Code Online (Sandbox Code Playgroud)

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

小智 15

你应该实现Serializable接口.

  • OP 正在寻求*另一个*解决方案。 (3认同)

m1s*_*hka 14

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

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

  • 这是解决问题的方法还是只是抑制错误?抱歉,我是 spring Jpa 的新手,正在尝试使用非主键连接表。 (2认同)

Ste*_*235 12

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

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

  • 在我的例子中,它是一个`ManyToOne`映射,它在查询中产生了多个结果,产生了`ClassCastException`.Hibernate在`implements Serializable`之后创建了一个合适的Exception. (3认同)

use*_*421 5

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

  • @Juha Syrjälä:显然,但这并不能使它成为相同的解决方案。你必须做更多的工作。 (2认同)