web-dev-qa-db-ja.com

Java.io.Serializableにキャストできません

現在、ユーザーの詳細を取得するために基準を使用していますが、適切なユーザーで詳細オブジェクトをクエリしようとすると、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を実装させることで簡単に解決できることはわかっていますが、他の解決策はありますか?

19
Thizzer

他の唯一の解決策は、Externalizableを実装することです。

5
user207421

Serializableインターフェースを実装する必要があります。

15
user467871

私にとって、問題は、pk以外の関係を使用する場合のHibernateのバグでした: https://hibernate.atlassian.net/browse/HHH-7668

回避策として、私はSerializableを実装しましたが、例外はなくなりました

13
m1schka

私の経験はこれでした。親子関係のチェーンが働いていました。その後、リファクタリングを余儀なくされました。処理中に、すべての注釈を正しく更新できませんでした。それが、Serializableエラーへのキャストの受信を開始したときです。 Serializableを実装したところ、実際の問題が明らかになりました。すべてがうまくいったら、Serializableを削除することができました。

したがって、あなたの質問への答えとして、実際の問題はセットアップにある可能性があり、Hibernateは特定のエンティティをシリアル化することによって問題を回避しようとしています。一時的にSerializableを実装して問題を明らかにしてから、削除してみてください。

12
Steve11235