Java アプリケーションの DAO レイヤーに次のメソッドがあります。
public void save(Employee emp) {
System.out.println("emp type: " + emp.getClass().getName);
getHibernateTemplate().save(emp);
System.out.println("object saved!");
System.out.flush();
}
従業員クラスは、他のどのクラスからも拡張されておらず、次の hbm ファイルを持っています。
<hibernate-mapping>
<class name="org.myCompany.Employee" table="employee">
<!-- fields omitted to save space -->
</hibernate-mapping>
しかし、挿入は java.lang.ClassCastException で失敗します。最初は、マッピングに何か問題があると思いました (整数からブール値へのマッピングなど) が、hibernate の show_sql デバッグをオンにすると、ログ ファイルに次のようなものが見つかりました。
emp タイプ: org.myCompany.Employee
Hibernate: 顧客に挿入 (.......) 値 (......)
java.lang.ClassCastException
挿入する完全にランダムなテーブルを選択したのはなぜですか? 構成ファイルの構成が間違っているに違いないと確信していますが、どのファイルかわかりません。私は以下をチェックしました:
- applicationContext-hibernate.xml -> Customer オブジェクトと Employee オブジェクトの両方が正しい hbm ファイルにマップされます
- Customer にも Employee にも継承関係はありません (Person や User のような共通の親クラスさえありません)
他に何を試すことができますか?