2016-08-25 86 views
1

我知道这个问题已经被问了很多时间,但我无法找到我做了什么错?没有持久性提供EntityManager的命名

我想改变我的java web项目进入Maven项目...... 当我开始它得到了这个错误,我无法找到原因:

javax.persistence.PersistenceException: No Persistence provider for EntityManager named calamar 

这里是我的pom.xml:

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>fr.airfrance</groupId> 
    <artifactId>calamar</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>calamar Maven Webapp</name> 
    <url>http://maven.apache.org</url> 

    <dependencies> 

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

     <dependency> 
      <groupId>jstl</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 

     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 

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

     <dependency> 
      <groupId>postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <version>9.1-901-1.jdbc4</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
     </dependency> 

    </dependencies> 

    <build> 
     <finalName>calamar</finalName> 
    </build> 
</project> 

而且我persistance.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/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"> 
    <persistence-unit name="calamar" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <class>beans.Application</class> 
     <class>beans.Derogation</class> 
     <class>beans.DerogationFille</class> 
     <class>beans.DerogationAutre</class> 
     <class>beans.DerogationLinux</class> 
     <class>beans.DerogationOracle</class> 
     <properties> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> 
      <property name="hibernate.id.new_generator_mappings" value="false"/> 
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/> 
      <property name="hibernate.connection.url" value="..."/> 
      <property name="hibernate.connection.username" value="..."/> 
      <property name="hibernate.connection.password" value="..."/> 
     </properties> 
    </persistence-unit> 
</persistence> 

我已经把我的persistence.xml在这个eclipse文件夹:

的Java资源/ src目录/主/资源/ persistence.xml中

有人可以帮我吗?

+0

你如何执行你的应用程序? – yukihane

+0

@Antoine你是否尝试直接将'hibernate-entitymanager.jar'添加到类路径中? (直接把它放在'/ lib'文件夹或通过IDE添加它,我不使用Eclipse,但我认为它是通过右键单击项目,应该有Build Path) – Hrabosch

+0

在tomcat服务器中,eclipse“run on server” – Antoine

回答

2

尝试把你的persistence.xml的META-INF文件夹中:

的Java资源/ src目录/主/资源/ META-INF/persistence.xml中

+0

我试过了,同样的错误:/ – Antoine

+1

如果你的所有东西都直接打包在你的war文件中,我想你可以直接将它添加到你的WEB-INF文件夹中,如下所示: Java Resources/src/main/webapp/WEB-INF/classes/META-INF/persistence.xml – Thogor

+0

我试了一下......仍然是同样的错误... – Antoine

相关问题