无法转换为 java.io.Serialized

问题描述 投票:0回答:5

我当前正在使用条件来检索用户的详细信息,但是当尝试使用正确的用户查询详细信息对象时,我收到 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。我知道我可以通过让用户实现可序列化来轻松解决它,但是还有其他解决方案吗?

java hibernate criteria
5个回答
49
投票

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

作为解决方法,我实现了可序列化并且异常消失了


36
投票

您应该实现

Serializable
接口。


16
投票

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

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


7
投票

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


0
投票

在这种情况下,Hibernate 无法将您的导出转换为可序列化,并且使用下面的代码可以解决您的问题。

public class {class name} implements Serializable
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.