2015-07-21 3 views
1

Я работаю над приложением Swing с JPA и Hibernate. Но каждый раз, когда я пытаюсь вызвать следующий код, чтобы получить EntityManagerHibernate, JPA, поставщик с постоянством для EntityManager с именем

try { 
    Class.forName("org.postgresql.Driver"); 
} catch (ClassNotFoundException e) { 
    e.printStackTrace(); 
} 
EntityManagerFactory emf = Persistence.createEntityManagerFactory("abcd"); 
EntityManager em = emf.createEntityManager(); 

я получаю следующие исключения:

Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named abcd: Provider named org.hibernate.jpa.HibernatePersistenceProvider threw unexpected exception at create EntityManagerFactory: 
javax.persistence.PersistenceException 
javax.persistence.PersistenceException: Unable to build entity manager factory 

и

Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set 

Путь к persistence.xml является my.jar/meta-inf/persistence.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<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" xmlns="http://java.sun.com/xml/ns/persistence"> 
    <persistence-unit name="abcd" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
     <properties> 
      <property name="hibernate.connection.url" value="xxx"/> 
      <property name="hibernate.connection.password" value="xxx"/> 
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/> 
      <property name="hibernate.connection.user" value="xxx"/> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

Зависимости:

Все зависимость, кроме JUnit находится в пути к классам

<dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.8</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.persistence</groupId> 
     <artifactId>persistence-api</artifactId> 
     <version>1.0.2</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.3.10.Final</version> 
     <scope>compile</scope> 
    </dependency> 
+0

Проверьте класс org.hibernate.ejb.Hibernat ePersistence находится в вашем пути к классам. – ozgur

ответ

0

Кажется, он не может найти файл persistence.xml. Правильная папка для файла persistence.xml: META-INF, а не meta-inf.

Смежные вопросы