0

SpringMVCプロジェクトがあります。HSQLデータベースとHibernateを使用しています。Spring MVC(デフォルトではJPA)およびHibernateとの接続中にスタックしました。persistance.xmlSpringMVCディレクトリにファイルを作成しましたsrc/main/resources/META-INF。また、SpringMVCディレクトリに配置しようとしましたDeployed Resources/webapp/WEB-INF/classes/META-INF。どちらが正しいかわかりません。私はまだ同じ問題を抱えています。

これは私のpersistance.xmlです:

<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
                             http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0"> 
<persistence-unit name="entityManager">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>package.pl.models.Users</class>
    <properties>                    
        <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:file:/home/user/hsqldb/lib/my.spring.mvc/mybase" />
        <property name="javax.persistence.jdbc.user" value="user" />
        <property name="javax.persistence.jdbc.password" value="password" />

        <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />          
        <property name="hibernate.hbm2ddl.auto" value="create" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider" />
    </properties>
</persistence-unit>

これは私のSpringMVCコントローラーメソッド本体の1つです。

UsersHome usersHome = new UsersHome();
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("entityManager");
EntityManager entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
usersHome.setEntityManager(entityManager);
Users user = usersHome.findByUsername(login);

EntityManagerFactory初めて使用したときに回線でエラーが発生しました-永続性ユニットの名前を示しています。

私の例外は:

org.springframework.web.util.NestedServletException: Request processing failed; 
nested exception is javax.persistence.PersistenceException: No Persistence 
provider for EntityManager named entityManager

そして根本的な原因は次のとおりです。

javax.persistence.PersistenceException: No Persistence provider for EntityManager named entityManager

で適切な名前を使用しましたEntityManagerFactory。おそらく私は自分のDispatcher Servlet Contextファイルに間違いを犯しました。私はHibernateなどに従ってこのコードを持っています:

<!-- Hibernate session factory -->      
<beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">     

    <beans:property name="dataSource">
        <beans:ref bean="dataSource" />
    </beans:property>

    <beans:property name="hibernateProperties">
        <beans:props>
            <beans:prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</beans:prop>
            <beans:prop key="hibernate.show_sql">true</beans:prop>
            <beans:prop key="hibernate.hbm2ddl.auto">update</beans:prop>
        </beans:props>
    </beans:property>

    <beans:property name="annotatedClasses">
        <beans:list>
            <beans:value>package.pl.models.Users</beans:value>                              
        </beans:list>
    </beans:property>       
</beans:bean>
<!-- Hibernate session factory end -->

<!-- <beans:bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <beans:property name="persistenceUnitName" value="entityManager" />
</beans:bean> -->

<beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <beans:property name="sessionFactory" ref="sessionFactory" />
</beans:bean>   

<!-- <beans:bean id="usersDao" class="hutter.pl.dao.UsersHome">
    <beans:property name="entityManagerFactory" ref="entityManagerFactory" />
</beans:bean> -->

とにコメントしましbean id="entityManagerFactory"bean id="usersDao"。必要ですか?ただし、コメントなしでWebアプリケーションを起動できませんbean id="entityManagerFactory"。私はこの例外を受け取っています:

org.springframework.beans.factory.BeanCreationException: Error creating bean with 
name 'entityManagerFactory' defined in ServletContext resource 
[/WEB-INF/spring/appServlet/servlet-context.xml]: Invocation of init method failed;
nested exception is javax.persistence.PersistenceException: No Persistence 
provider for EntityManager named entityManager
4

2 に答える 2

2

申し訳ありませんが、私はあなたの完全な質問を読んでいません。私はこれを見たときに立ち止まりました:persistance.xml。使用するのはpersistence.xmlどうですか?

于 2012-07-10T08:57:59.487 に答える
0

Put your xml file into WEB-INF folder. The xml file contents sessionFactory and all that stub. And import it into spring.xml file as follows:

<import resource="classpath:persistance.xml" />
于 2012-07-10T08:36:07.483 に答える