2011-08-06 21 views
8

JPAプロジェクトでhibernateを開発中で、H2(組み込みデータベース)を使用して作業用persistence.xmlを取得しようとしています。 persistence.xmlのH2データベースとのJPA接続

<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    version="1.0"> 

    <persistence-unit name="DefaultPersistenceUnit" 
     transaction-type="RESOURCE_LOCAL"> 

     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <class>entity.user</class> 
     <properties> 
      <property name="hibernate.connection.url" value="jdbc:h2:/~test" /> --> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"></property> 
      <property name="hibernate.connection.driver_class" value="org.h2.Driver" /> 
      <property name="hibernate.connection.password" value="admin" /> 
      <property name="hibernate.connection.username" value="admin" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

しかし、私のこれを動作しない、常に私は

"のEntityManagerFactoryを作成できません" というエラー

EntityManagerFactory emf = Persistence.createEntityManagerFactory("DefaultPersistenceUnit"); 

を取得しています。 any anywは私に働いているpersistence.xmlを提供できますか?

+2

エラーメッセージはそれだけですか?より詳細なメッセージやスタックトレースはありませんか?あなたのクラスは本当にentity.userという名前ですか? –

+1

あなたの 'hibernate.connection.url'は本当に' jdbc:h2:/〜test'ですか? 'jdbc:h2:file:〜/ test; IFEXISTS = TRUE'がもっと妥当と思われます。 – trashgod

+1

[Hibernateのバージョン](http://www.h2database.com/html/tutorial.html#using_hibernate)とは何ですか? – trashgod

答えて

9

Springを使用していますか?もしそうなら、EntityManagerFactoryがコンテナによって提供されていない限り、これを試すことができます。

<bean id="entityManagerFactory" 
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
      <property name="generateDdl" value="true" /> 
      <property name="database" value="H2" /> 
     </bean> 
    </property> 
    <property name="persistenceUnitName" value="DefaultPersistenceUnit" /> 
</bean> 

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
</bean> 

<bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.h2.Driver" /> 
    <property name="url" value="jdbc:h2:database/~test" /> 
    <property name="username" value="sa" /> 
    <property name="password" value="" /> 
</bean> 
+0

私は、このアプローチを好むのは、テストやその他の設定(webまたはstandalone)のためにbeanを 'persistence.xml'を切り替えるよりも簡単に切り替えることができるからです。 –

関連する問題