2016-07-09 12 views
0

Ich habe ein Maven-Projekt mit der "4.3.11.Final" Version Hibernate Core und Entity-Manager, alles funktioniert gut. Heute, änderte ich die Version dieser Abhängigkeiten auf meiner pom.xml auf das neueste (5.2.1.Final) und mein Projekt nicht plötzlich:Warum bekomme ich einen "No Persistence Provider für EntityManager", wenn auf Version 5.0 aktualisiert?

Exception in thread "main" javax.persistence.PersistenceException:
Kein Persistence Provider für EntityManager mit dem Namen wiki.

Die Versionsnummer war die einzige Änderung, die ich gemacht habe. Gibt es eine bestimmte Einstellung, die ich vornehmen muss, um Hibernate 5 zu verwenden? Ich habe nichts über 5.0 Migration Guide gefunden.


Hier sind meine Dateien, die Klasse I Ausführung bin:

import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 

public final class SchemeExport { 

    private static final String PERSISTENCE_UNIT = "wiki"; 

    public static void main(String... args){ 
     // fails on the line below 
     EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT); 
     EntityManager manager = factory.createEntityManager(); 
     manager.close(); 
     factory.close(); 
    } 
} 

Meine Ausdauer-Datei:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
    <persistence-unit name="wiki"> 

     <provider>org.hibernate.ejb.HibernatePersistence</provider> 

     <class>model.Article</class> 
     <class>model.ArticleMeta</class> 
     <class>model.Category</class> 
     <class>model.Collaborator</class> 
     <exclude-unlisted-classes>true</exclude-unlisted-classes> 

     <properties> 
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> 
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/wiki?useUnicode=true&amp;useJDBCCompliantTimezoneS‌​hift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC"/> 
      <property name="javax.persistence.jdbc.user" value="root"/> 
      <property name="javax.persistence.jdbc.password" value="root"/> 

      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/> 
      <property name="hibernate.show_sql" value="true"/> 
      <property name="hibernate.format_sql" value="true"/> 

      <!--<property name="hibernate.hbm2ddl.auto" value="update"/>--> 
      <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

Mein 'pom.xml' (Weglassen der Gruppe/Artefakt Eigenschaften):

<?xml version="1.0" encoding="UTF-8"?> 
<project 
    xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <properties> 
     <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>6.0.3</version> 
     </dependency> 
     <!--<dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>4.3.11.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>4.3.11.Final</version> 
     </dependency>--> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>5.2.1.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>5.2.1.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-web-api</artifactId> 
      <version>7.0</version> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
        <compilerArguments> 
         <endorseddirs>${endorsed.dir}</endorseddirs> 
        </compilerArguments> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.3</version> 
       <configuration> 
        <failOnMissingWebXml>false</failOnMissingWebXml> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.6</version> 
       <executions> 
        <execution> 
         <phase>validate</phase> 
         <goals> 
          <goal>copy</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${endorsed.dir}</outputDirectory> 
          <silent>true</silent> 
          <artifactItems> 
           <artifactItem> 
            <groupId>javax</groupId> 
            <artifactId>javaee-endorsed-api</artifactId> 
            <version>7.0</version> 
            <type>jar</type> 
           </artifactItem> 
          </artifactItems> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

Antwort

3

Sie verwenden die Wron g/älterer Persistenzanbieter in Ihrem persistence.xml. So ersetzen

<provider>org.hibernate.ejb.HibernatePersistence</provider> 

mit

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>