【问题标题】:JPA with Hibernate: javax.persistence.PersistenceException: No Persistence provider for EntityManager errorJPA with Hibernate: javax.persistence.PersistenceException: No Persistence provider for EntityManager error
【发布时间】:2016-04-11 19:02:13
【问题描述】:

我正在尝试使用带有 Hibernate 的 JPA 设置项目。

我的 persistence.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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"
version="2.0">

<persistence-unit name="Application">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>

    <properties>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/webshop" />
        <property name="javax.persistence.jdbc.user" value="root" />
        <property name="javax.persistence.jdbc.password" value="root" />

        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.hbm2ddl.auto" value="create" />
    </properties>

</persistence-unit>

这些是依赖项:

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
    </dependency>

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

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.0.6.Final</version>
    </dependency>

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

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

</dependencies>

以及项目结构:

当我尝试获取实体管理器时,我收到此错误: javax.persistence.PersistenceException:没有名为 Application 的 EntityManager 的持久性提供程序

EntityManagerFactory factory = Persistence.createEntityManagerFactory("Application");

【问题讨论】:

  • 你应该使用org.hibernate.jpa.HibernatePersistenceProvider而不是org.hibernate.ejb.HibernatePersistence。
  • 你不应该有 org.hibernatehibernate-core4.3.8.Final
  • 我也有同样的问题。我尝试将org.hibernate.ejb.HibernatePersistence 更改为org.hibernate.jpa.HibernatePersistenceProvider 但也不起作用

标签: hibernate maven jpa


【解决方案1】:

就像@Naros 说的:对于 Hibernate 5.2.2 你应该使用:

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

代替:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多