2011-08-06 88 views
8

Tôi đang phát triển một hibernate với dự án JPA và cố gắng để có được persistence.xml làm việc bằng cách sử dụng H2 (cơ sở dữ liệu nhúng).Kết nối JPA với cơ sở dữ liệu H2

persistence.xml

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

Nhưng tôi đây không phải đang làm việc, luôn luôn tôi nhận được lỗi

"Không thể tạo EntityManagerFactory"

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

. Có thể anyonw cung cấp cho tôi tệp persistence.xml hoạt động không?

+2

Thông báo lỗi chỉ nói điều đó? Bạn không có một thông điệp chi tiết hơn và/hoặc ngăn xếp dấu vết? Là lớp học của bạn thực sự được đặt tên entity.user? –

+1

'hibernate.connection.url' của bạn có thực sự' jdbc: h2:/~ test' không? 'jdbc: h2: file: ~/test; IFEXISTS = TRUE' có vẻ hợp lý hơn. – trashgod

+1

[Phiên bản Hibernate] nào (http://www.h2database.com/html/tutorial.html#using_hibernate)? – trashgod

Trả lời

9

Bạn đang sử dụng Spring? Nếu bạn có thể thử điều này miễn là EntityManagerFactory không được cung cấp bởi một vùng chứa

<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

Tôi thích phương pháp này vì việc chuyển đậu ra ngoài dễ dàng hơn cho các thử nghiệm hoặc các cấu hình khác (web hoặc độc lập) hơn là chuyển đổi 'persistence.xml'. –

Các vấn đề liên quan