今天在IntelliJ IDEA下运行一个maven项目,该项目是s2sh开发的,hibernate是用的很早的hbm xml设置的bean和mysql数据库映射关系,一路配置完成后,发现运行是抛出如下异常:Caused by: org.hibernate.MappingNotFoundException: resource: cn/itcast/entity/SysCode.hbm.xml not found
at org.hibernate.cfg.Configuration.addResource(Configuration.java:665)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1679)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1647)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1626)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1600)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1535)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:642)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
... 59 more
而在hibernate.cfg.xml配置文件中,该hbm xml文件的路径设置是正确的,而且文件也确实存在
然后在debug模式在断点,查看hibernate启动加载hbm xml文件的类时,发现他是在target目录去查找的文件
该目录下确实没有对应的hbm xml文件
于是通过搜索找到解决方案,因为该项目是maven项目,需要maven build发布到target目录,所以通过设置pom.xml就可以解决
jk1107
src/main/java
**/*.xml
false
再次build或者run项目就成功了。
enjoy it,遇到问题不要只看到表面,大部分原因是因为你个人姿势不对,而不是外部环境原因。