Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 中断休眠保存方法_Java_Hibernate_Classcastexception - Fatal编程技术网

Java 中断休眠保存方法

Java 中断休眠保存方法,java,hibernate,classcastexception,Java,Hibernate,Classcastexception,我在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(); } employee类不从任何其他类扩展,并具

我在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();
}
employee类不从任何其他类扩展,并具有以下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
休眠:插入到客户 (……)值(……)
java.lang.ClassCastException

为什么它选择了一个完全随机的表来插入?我肯定我一定有一些配置文件配置错误,但我不知道是哪一个。我检查了以下内容:

  • applicationContext-hibernate.xml->客户和员工对象都映射到其正确的hbm文件
  • 客户和员工都没有继承关系(甚至没有像Person或User这样的公共父类)

我还可以尝试什么?

在调用类中,我有以下两个调用:

UserDAO.saveCustomer(customer);
UserDAO.saveEmployee(employee);
我认为customer对象保存正确。我甚至在两个调用之间放置了一条调试语句,并打印了调试方法。但是,注释掉UserDAO.saveCustomer行修复了这个问题。这使我更仔细地检查了customer对象,发现它已损坏(错误的类)。Hibernate必须一直缓存insert语句,直到事务完成


因此,这个问题现在已经解决。

请显示完整的堆栈跟踪。通常,您应该编辑您的问题,而不是发布答案