Invocation of init method failed; nested exception is org.hibernate.MappingException
最近有人在大家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类型的映射表。
熟记上面的对照表,在实际开发中会事半功倍!
扫描下方二维码,关注业余草微信公众号,回复“FFmpeg”关键词,获取 FFmpeg 视频教程!