現在、ユーザーの詳細を取得するために基準を使用していますが、適切なユーザーで詳細オブジェクトをクエリしようとすると、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
インターフェースを実装する必要があります。
私にとって、問題は、pk以外の関係を使用する場合のHibernateのバグでした: https://hibernate.atlassian.net/browse/HHH-7668
回避策として、私はSerializableを実装しましたが、例外はなくなりました
私の経験はこれでした。親子関係のチェーンが働いていました。その後、リファクタリングを余儀なくされました。処理中に、すべての注釈を正しく更新できませんでした。それが、Serializableエラーへのキャストの受信を開始したときです。 Serializableを実装したところ、実際の問題が明らかになりました。すべてがうまくいったら、Serializableを削除することができました。
したがって、あなたの質問への答えとして、実際の問題はセットアップにある可能性があり、Hibernateは特定のエンティティをシリアル化することによって問題を回避しようとしています。一時的にSerializableを実装して問題を明らかにしてから、削除してみてください。