2010-09-10 35 views
1

我正在使用休眠的春天mvc应用程序,我编译和运行我的代码有一些麻烦。春季应用程序不能找到hbm.xml映射文件

这是因为每当我尝试创建会话工厂bean时,都找不到我的FileObject.hbm.xml。

我的豆看起来像这样

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource1"></property> 
    <property name="mappingResources"> 
     <list> 
      <value>FileObject.hmb.xml</value> 
     </list> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">create</prop> 
     </props> 
    </property> 
</bean> 

而且FileObject.hmb.xml驻留在我的WAR文件夹的根。我试图将这个文件移动到不同的文件夹,包括实际的src文件夹,并在会话工厂中提供正确的路径,但它仍然给我一个FileNotFoundException。

这是因为java没有识别hello.hmb.xml类型的文件?如果不是所有的文件格式是这样的:。扩展名

Hibernate映射文件似乎是不同的,虽然

后续:正如我前面提到的,我试图把我的.hbm。 XML在许多地方,包括src目录,仍然不会工作。

我的项目结构类似于此:

project structure http://static.springsource.org/docs/Spring-MVC-step-by-step/images/dir-structure-endp1.png

我试图把文件战争的根目录,WEB-INF,班内,如之前所说,在我的实际src目录。

我从来不知道这是为了让hibernate和spring成功运行这么多麻烦。

+1

是一个错字? “hmb.xml”而不是“hbm.xml” – 2010-09-10 13:38:19

+0

嗨,这是一个错字。 im我的代码其hbm – jonney 2010-09-10 13:49:48

+0

*我试图把文件放在战争的根目录,WEB-INF,类*这不是一个随机的选择,映射文件必须在类路径上(即在'WEB-INF /类下正如大家所指出的那样。这就是事情的工作方式。 – 2010-09-11 10:29:19

回答

1

MappingResources只能接收相对于您的类路径的路径。

http://forum.springsource.org/showthread.php?t=87988

+0

什么是适当的方式? – jonney 2010-09-10 13:50:18

+0

看到编辑,链接包括 – 2010-09-10 13:56:21

+0

我做了,OP有一个不同的例外,然后我。我的例外是它不能找到文件,即FileNotFoundException。 – jonney 2010-09-10 14:23:32

0

如果的.hbm.xml文件在您的CLASSPATH目录树,尝试把从CLASSPATH的根开始的路径:我用

<value>foo/bar/persistence/hibernate/FileObject.hmb.xml</value> 

目录路径就是一个例子。