没有名为xxxx的EntityManager的持久性提供程序

时间:2019-07-25 20:32:01

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

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)

1 个答案:

答案 0 :(得分:0)

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

定义持久性提供程序名称:

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

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

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

之后 <persistence-unit name="myPersistenceUnit">