【问题标题】:No Persistence provider for EntityManager named xxxx没有名为 xxxx 的 EntityManager 的持久性提供程序
【发布时间】:2019-12-04 04:34:47
【问题描述】:

enter image description here当前处于休眠状态。我创建简单的项目。我按原样做了所有事情,但我得到“没有名为 xxxx 的 EntityManager 的持久性提供程序”。我不知道出了什么问题。我找到了很多解决方案,但没有一个适合我。

package pl.javastart.dao;

import pl.javastart.model.Book;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
public class BookDaoImpl implements BookDao {

    private EntityManagerFactory emFactory;
    private EntityManager entityManager;

    public BookDaoImpl() {
        emFactory = Persistence.createEntityManagerFactory("myPersistenceUnit");
        entityManager = emFactory.createEntityManager();
    }

    public void save(Book book) {
        EntityTransaction tx = entityManager.getTransaction();
        tx.begin();
        entityManager.persist(book);
        tx.commit();
    }

    public Book get(Long id) {
        Book book = entityManager.find(Book.class, id);
        return book;
    }

    public void cleanUp() {
        entityManager.close();
        emFactory.close();
    }
}
<persistence 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"
             version="2.1">
    <persistence-unit name="myPersistenceUnit"
                      transaction-type="RESOURCE_LOCAL">
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/library" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="admin" />
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.schema-generation.database.action"
                      value="drop-and-create"/>
        </properties>
    </persistence-unit>
</persistence>
<?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>JPAbezSpringa</groupId>
    <artifactId>jpabezbezsprinsaa</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <release>10</release>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.3.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.3.1.Final</version>
        </dependency>
        <dependency>
            <groupId>javax.transaction</groupId>
            <artifactId>jta</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.0</version>
        </dependency>
    </dependencies>


</project>

线程“主”javax.persistence.PersistenceException 中的异常:没有名为 myPersistenceUnit 的 EntityManager 的持久性提供程序 在 javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85) 在 javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) 在 pl.javastart.dao.BookDaoImpl.(BookDaoImpl.java:16) 在 pl.javastart.main.Main.main(Main.java:10)

【问题讨论】:

  • 尝试在&lt;persistence-unit&gt;标签内添加&lt;provider&gt;org.hibernate.jpa.HibernatePersistenceProvider&lt;/provider&gt;
  • 同样的异常,可能是路径持久化文件不正确。我在我的结构项目中添加了照片。我有资源的持久性文件-> META-INF->persistence.xml
  • 我使用 java 11

标签: java spring hibernate java-11 persistence.xml


【解决方案1】:

也许对你有帮助:https://stackoverflow.com/a/1285436/9593249

定义持久化提供者名称:

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

如果您使用的是 Hibernate 4 或 Hibernate 5

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

之后 &lt;persistence-unit name="myPersistenceUnit"&gt;

【讨论】:

  • 同样的异常,可能是路径持久化文件不正确。我在我的结构项目中添加了照片。我有资源的持久性文件-> META-INF->persistence.xml
猜你喜欢
  • 1970-01-01
  • 2015-11-08
  • 2016-04-18
  • 1970-01-01
  • 2014-03-03
  • 2016-08-02
  • 2012-05-02
  • 2013-10-19
相关资源
最近更新 更多