2011-09-18 86 views
0

我有一个简单的Java应用程序,我试图在Spring中集成Hibernate,但似乎Spring配置文件找不到* .hbm.xml(映射资源): 我有一个文件名为持久性context.xml中,我使用它作为一个Spring配置文件,我有以下豆声明:Hibernate在Spring中集成的问题

org.hibernate.dialect.MySQLDialect

但是被抛出的异常: java.io.FileNotFoundException:类路径资源[pool.hbm.xml]无法打开,因为它不存在 我甚至尝试给映射资源属性一个绝对路径值。它不起作用。 谢谢!

UPDATE: 我的春天的conf文件:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:p="http://www.springframework.org/schema/p" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:aop="http://www.springframework.org/schema/aop" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value='jdbc:mysql://localhost/bestofs_seinfeld' /> 
     <property name="username" value="root" /> 
     <property name="password" value="futifuti825300" /> 
     <property name="initialSize" value="5" /> 
     <property name="maxActive" value="10" /> 
    </bean> 

    <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource"/> 
     <property name="mappingResources" value="pool.hbm.xml" /> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="dialect">org.hibernate.dialect.MySQLDialect</prop> 
      </props> 
     </property> 
    </bean> 

    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> 
     <property name="sessionFactory"> 
      <ref bean="mySessionFactory"/> 
     </property> 
    </bean> 

    <bean id="voteDao" class="bestofs.persistence.HibernatePoolDao"> 
    <property name="hibernateTemplate"> 
     <ref bean="hibernateTemplate"/>  
    </property> 
</bean> 
</beans> 

而且我pool.hbm.xml是:

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
    <class name="bestofs.persistence.PoolBean" table="sein_pool"> 
    <id name="idVote" column="ID_Vote"> 
     <generator class="assigned"/> 
    </id> 

    <property name="IdActor"> 
     <column name="ID_Actor"/> 
    </property> 
    <property name="IdUser"> 
     <column name="ID_User"/> 
    </property> 
    <property name="IdSession"> 
     <column name="ID_Session"/> 
    </property> 
</class> 
</hibernate-mapping> 

而且两者的配置文件在同一文件夹中。

+4

请张贴您的SPring conf xml文件,特别是Hibernate配置。 –

+0

我更新了我的文章 – spauny

回答

1

如果给出磁盘上文件位置的绝对路径(例如c:/mapings/pool.hbm.xml),它将无法工作,因为它搜索类路径上的映射。映射文件应位于您的jar或IDE类路径中。

+0

但是,如果它不是一个Web应用程序,我应该在哪里放置这个配置文件?在同一个文件中的类? – spauny

+0

是的,它应该和你的课程在同一个文件夹中。 –

0

如果您使用的是Tomcat + web项目,你应该你的src文件夹中创建资源文件夹,并把你的映射文件有它等于:

<property name="mappingResources"> 
     <list> 
      <value>object.hbm.xml</value> 
     </list> 
    </property> 

希望它能帮助。

0

使用

<property name="mappingResources" value="pool.hbm.xml" /> 

,并把pool.hbm.xml你的classpath的根。即您的bestofs.persistence.PoolBean将位于目录结构中,如<somewhere>/bestofs/persistence/PoolBean.class。映射文件应位于<somewhere>之内,与bestofs并排。

这就是你需要做的,除非你有一些奇怪的ClassLoader魔术发生。