проблемы с интеграцией Hibernate в Spring - PullRequest
0 голосов
/ 18 сентября 2011

У меня есть простое Java-приложение, и я пытаюсь интегрировать Hibernate в Spring, но кажется, что конфигурационный файл Spring не может найти * .hbm.xml (ресурс сопоставления): у меня есть файл с именем persistence-context.xml, который я использую как конфигурационный файл Spring, и у меня объявлен следующий компонент:

org.hibernate.dialect.MySQLDialect

Но выдается исключение: java.io.FileNotFoundException: ресурс пути к классу [pool.hbm.xml] не может быть открыт, потому что он не существует. Я даже пытался присвоить свойству ресурсов сопоставления абсолютное значение пути.Не работаетСпасибо!

ОБНОВЛЕНИЕ: файл конфигурации My Spring:

    <?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>

И оба файла конфигурации находятся ната же папка.

Ответы [ 3 ]

1 голос
/ 18 сентября 2011

Если вы указываете абсолютный путь к расположению файла на диске (например, c: /mapings/pool.hbm.xml), он не будет работать, потому что он ищет отображение на пути к классам. Файл отображения должен находиться внутри вашего jar или в пути к классам IDE.

0 голосов
/ 18 сентября 2011

Используйте

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

и поместите pool.hbm.xml в корень вашего пути к классам. То есть ваш bestofs.persistence.PoolBean будет в структуре каталогов, как <somewhere>/bestofs/persistence/PoolBean.class. Файл сопоставления должен быть внутри <somewhere>, рядом с bestofs.

Это все, что вам нужно сделать, если у вас не происходит какое-то странное волшебство ClassLoader.

0 голосов
/ 18 сентября 2011

Если вы используете веб-проект Tomcat +, вы должны создать папку ресурсов внутри папки src и поместить туда файлы сопоставления, это будет равно:

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...