У меня есть следующий метод на уровне DAO моего Java-приложения:
public void save(Employee emp) {
System.out.println("emp type: " + emp.getClass().getName);
getHibernateTemplate().save(emp);
System.out.println("object saved!");
System.out.flush();
}
Класс employee не наследуется ни от каких других классов и имеет следующий файл hbm:
<hibernate-mapping>
<class name="org.myCompany.Employee" table="employee">
<!-- fields omitted to save space -->
</hibernate-mapping>
Однако вставка завершается с ошибкой java.lang.ClassCastException. Сначала я подумал, что с моим сопоставлением что-то не так (например, целочисленное сопоставление с логическим значением), но затем я включил отладку show_sql в спящем режиме и обнаружил следующее в своем файле журнала:
тип emp: org.myCompany.Employee
Hibernate: вставка в значения клиента (.......) (......)
java.lang.ClassCastException
Почему он выбрал совершенно случайную таблицу для вставки? Я уверен, что у меня неправильно настроен какой-то файл конфигурации, но я не знаю, какой именно. Я проверил следующее:
- applicationContext-hibernate.xml -> объекты Customer и Employee сопоставляются с их правильными файлами hbm
- ни Customer, ни Employee не имеют отношения наследования (нет даже общего родительского класса, такого как Person или User)
Что еще я мог попробовать?