Invocation of init method failed; nested exception is org.hibernate.MappingException

分类: JAVA 发布时间: 2017-07-13 11:00

最近有人在大家SSH框架的项目时遇到了org.hibernate.MappingException映射异常。本文总结一下产生映射异常的原因和解决思路。

14:22:16,137  WARN XmlWebApplicationContext:647 - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [bean.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: class com.erp.model.Dept not found while looking for property: id
14:22:16,140 ERROR ContextLoader:353 - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [bean.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: class com.erp.model.Dept not found while looking for property: id
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)

根据提示信息我们可以发现,该映射异常主要是说我们的Dept类中缺少主键ID字段。也就是说ID字段与数据库中的表列不是一一对应的,或者对应不上造成的。

该错误最终导致了sessionFactory创建失败。

解决这类问题的思路主要是看看表的映射是否一一对应。还有就是类型是否正确。

如果你不确认是否正确,可以使用eclipse上的hibernate插件进行反转自动生成java类。

下面摘录一些mysql数据库字段类型和java类型的映射表。

mysql映射hibernate字段对应关系

mysql映射hibernate字段对应关系

MySQL对应java数据类型对照表

MySQL对应java数据类型对照表

数据库不常用数据类型和java数据类型对照表

数据库不常用数据类型和java数据类型对照表

熟记上面的对照表,在实际开发中会事半功倍!


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!