2017-02-19 230 views
1

我是JPA的新手。 我一直得到這個錯誤:沒有EntityManager的持久性提供者名爲itmd4515PU

No Persistence provider for EntityManager named 

我試着從其他職位的一些建議。像添加

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

在Persistence.xml中。並在Pom.xml中添加

<dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.0-api</artifactId> 
     <version>1.0.0.Final</version> 
    </dependency> 

。我仍然有同樣的錯誤。

Error Snapshot

下面是我的持久性單元:

<?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="itmd4515PU" transaction-type="JTA"> 
    <provider>org.hibernate.HibernatePersistence</provider> 
    <jta-data-source>jdbc/itmd4515DS</jta-data-source> 
    <class>edu.iit.sat.itmd4515.jwang206.domain.Address</class> 
    <class>edu.iit.sat.itmd4515.jwang206.domain.CD_Store</class> 
    <class>edu.iit.sat.itmd4515.jwang206.domain.Item</class> 
    <class>edu.iit.sat.itmd4515.jwang206.domain.Supplier</class> 
    <exclude-unlisted-classes>true</exclude-unlisted-classes> 
    <properties> 
     <property name="javax.persistence.schema-generation.database.action"  value="drop-and-create"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

和pom.xml中:

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

<groupId>edu.iit.sat.itmd4515.jwang206</groupId> 
<artifactId>jwang206-fp</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>war</packaging> 

<name>jwang206-fp</name> 

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

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 

    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>6.0.5</version> 

    </dependency> 
    <dependency> 
     <groupId>org.eclipse.persistence</groupId> 
     <artifactId>eclipselink</artifactId> 
     <version>2.5.2</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>5.4.0.CR1</version> 

    </dependency> 
    <dependency> 
     <groupId>org.glassfish.web</groupId> 
     <artifactId>javax.el</artifactId> 
     <version>2.2.6</version> 

    </dependency> 
    <dependency> 
     <groupId>org.eclipse.persistence</groupId> 
     <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId> 
     <version>2.5.2</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.0-api</artifactId> 
     <version>1.0.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.7</source> 
       <target>1.7</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> 

和我的文件結構:

File hierarchy image

請指教,非常感謝!

回答

0

您已經獲得了由javax.persistence接口組成的API依賴關係,但您還需要一些具體的實現。

加入這個依賴於你的pom.xml(版本號是由你):

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>5.2.7.Final</version> 
</dependency> 

那麼持續供應商變更爲:

<persistence-unit name="itmd4515PU" transaction-type="JTA"> 
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
+0

我仍然得到錯誤說:異常在線程「main」中javax.persistence.PersistenceException:在添加新實現後無法找到持久性單元。 – Gervasio

+0

添加WAR文件內容的結構..尤其是在META-INF所在的位置 –

+0

對不起,但您是什麼意思添加WAR文件內容的結構? – Gervasio

相關問題