org.hibernate.MappingNotFoundException:resource:*找不到hbm.xml [英] org.hibernate.MappingNotFoundException: resource: *hbm.xml not found

查看:93
本文介绍了org.hibernate.MappingNotFoundException:resource:*找不到hbm.xml的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

JBoss AS 7.0.1.Final,Hibernate 3.我们有一个MySQL数据源。



我有指向* hbm.xml文件的映射资源。我得到的部署错误告诉我'resource:* hbm.xml not found',所以实体没有正确映射 - 这个堆栈跟踪是由于User.hbm.xml没有找到,

  14:44:34,654信息[org.hibernate.cfg.Configuration](MSC服务线程1-9)HHH00042:从文件配置:hibernate.cfg.xml 
14:44:34,668 WARN [org.hibernate.internal.util.xml.DTDEntityResolver](MSC服务线程1-9)HHH00223:识别过时的hibernate命名空间http://hibernate.sourceforge.net/。改为使用命名空间http://www.hibernate.org/dtd/。参考Hibernate 3.6迁移指南!
14:44:34,670信息[org.hibernate.cfg.Configuration](MSC服务线程1-9)HHH00221:从资源读取映射:User.hbm.xml
14:44:34,697 SEVERE [ com.mycompany.myapp.common.persistence.HibernateUtil](MSC服务线程1-9)初始化SessionFactory查找失败:org.hibernate.MappingNotFoundException:资源:User.hbm.xml未找到
,位于org.hibernate。 cfg.Configuration.addResource(Configuration.java:720)[hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java: 2083)[hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
在org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2055)[hibernate-core-4.0.0 .Beta5.jar:4.0.0.Beta5]
在org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2035)[hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5 ]
在org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1988)[hibernate-core-4.0.0.Beta5.jar:4.0。 0.Beta5]
在org.hibernate.cfg.Configuration.configure(Configuration.java:1961)[hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
at com .mycompany.myapp.common.persistence.HibernateUtil。< clinit>(HibernateUtil.java:42)[classes:]
at com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:216 )[classes:]
at com.mycompany.myapp.common.servlet.SecurityFilter.init(SecurityFilter.java:55)[classes:]
at org.apache.catalina.core.ApplicationFilterConfig.getFilter (ApplicationFilterConfig.java:447)[jbossweb-7.0.1.Final.jar:7.0.1.Final]
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245)[jbossweb- 7.0.1.Final.jar:7.0.1.Final]
在org.apache.catalina.core.StandardContext.start(StandardContext.java:3836)[jbossweb-7.0.1.Final.jar:7.0。 1.Final]
在org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70)[jboss-as-web- 7.0.1.Final.jar:7.0.1.Final]
at org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1765)
at org.jboss.msc。 service.ServiceControllerImpl $ ClearTCCLTask.run(ServiceControllerImpl.java:2291)
at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_26]
at java。 util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_26]
在java.lang.Thread.run(Thread.java:680)[:1.6.0_26]


14:44:34,698 ERROR [org.apache.catalina.core.ContainerBase。[jboss.web]。[default-host]。[/ myapp-maventest]](MSC service thread 1 -9)异常开始过滤器EnterpriseSecurityFilter:java.lang.NoClassDefFoundError:无法初始化com.mycompany.myapp.common.persistence.HibernateUtil
com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings。 java:224)[classes:]
at com.mycompany.myapp.commo n.servlet.SecurityFilter.init(SecurityFilter.java:55)[classes:]
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447)[jbossweb-7.0.1.Final。 jar:7.0.1.Final]
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245)[jbossweb-7.0.1.Final.jar:7.0.1.Final]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3836)[jbossweb-7.0.1.Final.jar:7.0.1.Final]
at org.jboss.as.web .deployment.WebDeploymentService.start(WebDeploymentService.java:70)[jboss-as-web-7.0.1.Final.jar:7.0.1.Final]
at org.jboss.msc.service.ServiceControllerImpl $ StartTask .run(ServiceControllerImpl.java:1765)
at org.jboss.msc.service.ServiceControllerImpl $ ClearTCCLTask.run(ServiceControllerImpl.java:2291)$ b $ at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (ThreadPoolExecutor.java:886)[:1.6.0_26]
在java.util.concurrent.ThreadPoolExecutor $ Worker.ru n(ThreadPoolExecutor.java:908)[:1.6.0_26]
在java.lang.Thread.run(Thread.java:680)[:1.6.0_26]

$ b $错误[org.apache.catalina.core.ContainerBase。[jboss.web]。[default-host]。[/ myapp-maventest]](MSC服务线程1-9)异常启动过滤器CompanySecurityFilter: java.lang.NoClassDefFoundError:无法在com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:224)[classes:]中初始化类com.mycompany.myapp.common.persistence.HibernateUtil

at com.mycompany.myapp.common.servlet.SecurityFilter.init(SecurityFilter.java:55)[classes:]
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java: 447)[jbossweb-7.0.1.Final.jar:7.0.1.Final]
在org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245)[jbossweb-7.0.1.Final .jar:7.0.1.Final]
在org.apache.catalina.core.StandardContext.start(StandardContex t.java:3836)[jbossweb-7.0.1.Final.jar:7.0.1.Final]
在org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70)[jboss -as-web-7.0.1.Final.jar:7.0.1.Final]
at org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1765)
at org .jboss.msc.service.ServiceControllerImpl $ ClearTCCLTask.run(ServiceControllerImpl.java:2291)
at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_26] $ b $ java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_26] $ b $在java.lang.Thread.run(Thread.java:680)[:1.6。 0_26]


14:44:34,701错误[org.apache.catalina.core.ContainerBase。[jboss.web]。[default-host]。[/ myapp-maventest]] (MSC服务线程1-9)例外开始过滤器StationSecurityFilter:java.lang.NoClassDefFoundError:无法初始化类com.mycompany.myapp.common.persistence.HibernateUtil
at com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:224)[classes:]
at com.mycompany.myapp.common.servlet.SecurityFilter.init(SecurityFilter.java:55 )[class:]
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447)[jbossweb-7.0.1.Final.jar:7.0.1.Final]
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245)[jbossweb-7.0.1.Final.jar:7.0.1.Final]
at org.apache.catalina.core.StandardContext。 start(StandardContext.java:3836)[jbossweb-7.0.1.Final.jar:7.0.1.Final]
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.1.Final.jar:7.0.1.Final]
at org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1765)
在org.jboss.msc.service.ServiceControllerImpl $ ClearTCCLTask.run(ServiceControllerImpl.java:2291)
(ThreadPoolExecutor.java:908)[:java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)[:java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)[: (java.lang.Thread.run)(Thread.java:680)[:1.6.0_26]


14:44:34,702错误[org。 apache.catalina.core.ContainerBase。[jboss.web]。[default-host]。[/ myapp-maventest]](MSC服务线程1-9)异常启动过滤器StudioSecurityFilter:java.lang.NoClassDefFoundError:无法初始化类com.mycompany.myapp.common.persistence.HibernateUtil
at com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:224)[classes:]
at com.mycompany.myapp .studio.StudioSecurityFilter.init(StudioSecurityFilter.java:46)[classes:]
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447)[jbossweb-7.0.1.Final.jar :7.0.1.Final]
在org.apache.catalina.core.Stan dardContext.filterStart(StandardContext.java:3245)[jbossweb-7.0.1.Final.jar:7.0.1.Final]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3836) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
在org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70)[jboss-as-web-7.0 .1.Final.jar:7.0.1.Final]
at org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1765)
at org.jboss.msc.service .ServiceControllerImpl $ ClearTCCLTask.run(ServiceControllerImpl.java:2291)
at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_26]
在java.util .concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_26]
在java.lang.Thread.run(Thread.java:680)[:1.6.0_26]

我们的项目结构像

  Project 
|
| -pom.xml
|
| -src
| | - 主
| | -java
| | | -com ... businessobjects
| | - 资源
| | | -META-INF
| | -webapp
|
| -test

我们在src / main / resources /目录下有hibernate.cfg.xml, META-INF,以及src / main / java / com / businessobjects /中的各种* .class和* hbm.xml。我们的hibernate.cfg.xml看起来像

 <?xml version ='1.0'encoding ='utf-8'?> ; 
<!DOCTYPE hibernate-configuration PUBLIC
- // Hibernate / Hibernate配置DTD // EN
http://hibernate.sourceforge.net/hibernate-configuration-3.0。 DTD>
< hibernate-configuration>
< session-factory>
< property name =datasourceName> java:jboss / datasources / MySqlDS< / property>
< property name =dialect> org.hibernate.dialect.MySQLDialect< / property>
< mapping resource =com / mycompany / myapp / common / businessobjects / User.hbm.xml/>
< mapping resource =com / mycompany / myapp / common / businessobjects / Company.hbm.xml/>
< mapping resource =com / mycompany / myapp / common / businessobjects / ServerSettings.hbm.xml/>
< mapping resource =com / mycompany / myapp / common / businessobjects / Station.hbm.xml/>
< / session-factory>
< / hibernate-configuration>

我试过不同的路径来指向* hbm.xml文件 - 没有一个可以工作。我甚至试着给它提供* hbm.xml文件的绝对路径,这也是行不通的。



我也尝试复制* hbm。 xml到hibernate.cfg.xml所在的同一目录中 - 这也不起作用,同样的错误。



看起来像我的代码中的错误HibernateUtil类

  static {
try {
InitialContext ctx = new InitialContext();
配置配置=新配置();
属性properties = new Properties();
sessionFactory = configuration.configure(
new File(/ path / to / src / main / resources / META-INF / hibernate.cfg.xml)
).buildSessionFactory();
} catch(Throwable ex){
//确保您记录异常,因为它可能被吞下
log.error(Initial SessionFactory lookup failed。,ex);
抛出新的ExceptionInInitializerError(ex);
}
}

有什么想法发生了什么?谢谢

解决方案

将您的映射文件移至src / main / resources。只有.java文件属于src / main / java。


$ b 编辑:我设置了 github上的示例项目,展示了如何从hibernate.cfg.xml正确引用XML映射文件。


JBoss AS 7.0.1.Final, Hibernate 3. We have a MySQL datasource.

I have mapping resources pointing to *hbm.xml files. I get deployment errors that tell me 'resource: *hbm.xml not found', so entities are not being mapped correctly - this stack trace is due to the User.hbm.xml not being found,

14:44:34,654 INFO  [org.hibernate.cfg.Configuration] (MSC service thread 1-9) HHH00042:Configuring from file: hibernate.cfg.xml
14:44:34,668 WARN  [org.hibernate.internal.util.xml.DTDEntityResolver] (MSC service thread 1-9) HHH00223:Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
14:44:34,670 INFO  [org.hibernate.cfg.Configuration] (MSC service thread 1-9) HHH00221:Reading mappings from resource: User.hbm.xml
14:44:34,697 SEVERE [com.mycompany.myapp.common.persistence.HibernateUtil] (MSC service thread 1-9) Initial SessionFactory lookup failed.: org.hibernate.MappingNotFoundException: resource: User.hbm.xml not found
      at org.hibernate.cfg.Configuration.addResource(Configuration.java:720) [hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
      at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2083) [hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
      at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2055) [hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
      at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2035) [hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
      at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1988) [hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
      at org.hibernate.cfg.Configuration.configure(Configuration.java:1961) [hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
      at com.mycompany.myapp.common.persistence.HibernateUtil.<clinit>(HibernateUtil.java:42) [classes:]
      at com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:216) [classes:]
      at com.mycompany.myapp.common.servlet.SecurityFilter.init(SecurityFilter.java:55) [classes:]
      at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.start(StandardContext.java:3836) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)
      at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26]
      at java.lang.Thread.run(Thread.java:680) [:1.6.0_26]


14:44:34,698 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/myapp-maventest]] (MSC service thread 1-9) Exception starting filter EnterpriseSecurityFilter: java.lang.NoClassDefFoundError: Could not initialize class com.mycompany.myapp.common.persistence.HibernateUtil
      at com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:224) [classes:]
      at com.mycompany.myapp.common.servlet.SecurityFilter.init(SecurityFilter.java:55) [classes:]
      at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.start(StandardContext.java:3836) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)
      at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26]
      at java.lang.Thread.run(Thread.java:680) [:1.6.0_26]


14:44:34,699 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/myapp-maventest]] (MSC service thread 1-9) Exception starting filter CompanySecurityFilter: java.lang.NoClassDefFoundError: Could not initialize class com.mycompany.myapp.common.persistence.HibernateUtil
      at com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:224) [classes:]
      at com.mycompany.myapp.common.servlet.SecurityFilter.init(SecurityFilter.java:55) [classes:]
      at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.start(StandardContext.java:3836) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)
      at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26]
      at java.lang.Thread.run(Thread.java:680) [:1.6.0_26]


14:44:34,701 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/myapp-maventest]] (MSC service thread 1-9) Exception starting filter StationSecurityFilter: java.lang.NoClassDefFoundError: Could not initialize class com.mycompany.myapp.common.persistence.HibernateUtil
      at com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:224) [classes:]
      at com.mycompany.myapp.common.servlet.SecurityFilter.init(SecurityFilter.java:55) [classes:]
      at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.start(StandardContext.java:3836) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)
      at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26]
      at java.lang.Thread.run(Thread.java:680) [:1.6.0_26]


14:44:34,702 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/myapp-maventest]] (MSC service thread 1-9) Exception starting filter StudioSecurityFilter: java.lang.NoClassDefFoundError: Could not initialize class com.mycompany.myapp.common.persistence.HibernateUtil
      at com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:224) [classes:]
      at com.mycompany.myapp.studio.StudioSecurityFilter.init(StudioSecurityFilter.java:46) [classes:]
      at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.start(StandardContext.java:3836) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)
      at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26]
      at java.lang.Thread.run(Thread.java:680) [:1.6.0_26]

Our project is structured like

Project
|
|-pom.xml
|
|-src
|  |-main
|     |-java
|     |   |-com... businessobjects
|     |-resources
|     |   |-META-INF
|     |-webapp
|
|-test

we have hibernate.cfg.xml in src/main/resources/META-INF, and various *.class and *hbm.xml in src/main/java/com/businessobjects/. Our hibernate.cfg.xml looks like

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="datasourceName">java:jboss/datasources/MySqlDS</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <mapping resource="com/mycompany/myapp/common/businessobjects/User.hbm.xml"/>
        <mapping resource="com/mycompany/myapp/common/businessobjects/Company.hbm.xml"/>
        <mapping resource="com/mycompany/myapp/common/businessobjects/ServerSettings.hbm.xml"/>
        <mapping resource="com/mycompany/myapp/common/businessobjects/Station.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

I've tried different paths to point to the *hbm.xml files - none seem to work. I've even tried giving it the absolute path to the *hbm.xml files, that didn't work either.

I've also tried copying the *hbm.xml into the same directory as hibernate.cfg.xml - that also didn't work, same error.

Looks like it errors out at this point in the code of my HibernateUtil class

static {
    try {
        InitialContext ctx = new InitialContext();
        Configuration configuration = new Configuration();
        Properties properties = new Properties();
        sessionFactory = configuration.configure(
            new File("/path/to/src/main/resources/META-INF/hibernate.cfg.xml")
            ).buildSessionFactory();
    } catch (Throwable ex) {
        // Make sure you log the exception, as it might be swallowed
        log.error("Initial SessionFactory lookup failed.", ex);
        throw new ExceptionInInitializerError(ex);
    }
}

Any ideas what's going on? Thanks

解决方案

Move your mapping files into src/main/resources. Only .java files belong in src/main/java.

Edit: I've set up an example project on github showing how to correctly reference XML mapping files from a hibernate.cfg.xml.

这篇关于org.hibernate.MappingNotFoundException:resource:*找不到hbm.xml的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆