繁体   English   中英

休眠保存方式损坏

[英]Broken Hibernate Save Method

我的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
休眠:插入客户(.......)值(......)
java.lang.ClassCastException

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

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

我还能尝试什么?

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

UserDAO.saveCustomer(customer);
UserDAO.saveEmployee(employee);

我认为客户对象保存正确。 我什至在两个调用之间添加了一条调试语句,并打印了调试方法。 但是,注释掉UserDAO.saveCustomer行可解决此问题。 这使我更加仔细地检查了客户对象,发现它已损坏(类错误)。 Hibernate必须一直在缓存插入语句,直到事务完成为止。

因此,此问题现在已解决。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM