当前位置: 首页 > 知识库问答 >
问题:

没有名为 X 的 EntityManager 的持久性提供程序 - JPA

萧英光
2023-03-14

我的动态 Web 应用程序有问题。我刚刚开始学习JavaEE 6,现在我在JPA上堆叠。我配置了我的应用程序,添加了库,但我仍然得到这个令人讨厌的信息:没有名为X的EntityManager的持久性提供程序。我试图在互联网上得到答案,但没有什么帮助我。

这是我的persistance.xml文件:

<?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="PierwszaAplikacja" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>devcastzone.javaee.Uzytkownik</class>
    <properties>
        <property name="hibernate.connection.username" value="root"/>
        <property name="hibernate.connection.password" value=""/>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost/szkolenie_javaee?characterEncoding=utf8"/>
        <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
    </properties>
</persistence-unit>

这是我的班级Uzytkownik.java:

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="uzytkownik")
public class Uzytkownik implements Serializable {

    private static final long serialVersionUID = -3299291830280417103L;
    @Id
    private int id;
    private String imie;
    private String nazwisko;

    //getters and setters
}

以及servlet中我的EntityManagerFactory创建者:

protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException
{
    res.setContentType("text/plain;charset=utf-8");
    res.getWriter().println("Cos tam cos tam");
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("PierwszaAplikacja");
    EntityManager em = emf.createEntityManager();
    Uzytkownik u = em.find(Uzytkownik.class, 1);
    res.getWriter().println(u.getImie() + " " + u.getNazwisko() + "\n");
    em.close();
    emf.close();
    }

当然,我的persistence.xml在META-INF中。也许有人可以帮助我解决这个问题?

共有3个答案

罗心思
2023-03-14

将提供程序更改为:

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

致:

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
程峻
2023-03-14

如果使用WAR文件部署应用程序,则持久性。xml文件应位于WEB-INF/classes/META-INF目录下。

韩彬
2023-03-14

井。。这周我遇到了同样的问题。

尝试将META-INF复制到java src中。(与您的包裹位置相同)

它为我解决了问题。

 类似资料:
  • 我正在使用JPA开发一个JavaSE应用程序。不幸的是,调用后我得到了: 下面你会发现: 调用并意外返回 我的坚持。xml文件 我的项目结构 我的代码片段: 我的坚持。xml: 我的项目结构:

  • 问题内容: 我在目录下使用相同的名字。然后,我用以下代码调用它: 但是,我收到以下错误消息: 这是: 它应该在类路径中。但是,我得到了上面的错误。 问题答案: 在之后,定义持久性提供程序名称:

  • 我在REST服务器上工作,同时学习EJB\Hibernate。当服务调用DAO时,我面临一个问题,即它找不到我的持久性单元。 在本例中,我得到“无法为unitName PersistenceUnit检索EntityManagerFactory” 然后我试试这个: null pom.xml

  • 我试图在Eclipse中测试我的hibernate maven应用程序,当我运行获取enttity类名称的方法时,我得到了以下异常: 这是persistence.xml: 这是使用以下方法的类: 波姆。xml: 我尝试更改持久性的版本号、更改xmlns、提供程序的名称,但仍然是例外。

  • 我正在尝试调用persistence.xml来显示Netbean IDE中数据库中的一些数据。我已经查看并尝试了以前用户提出的不同方法,但我仍然无法解决这个问题。 我用这个来称呼持久性单元, 这是我试图运行文件时返回的结果, 这是第805行,错误似乎就是从这里产生的 如前所述, 我已经在持久化单元名称下添加了提供者, 我已经确保持久性是单元在META-INF文件夹中, 它在类路径中,所以我不确定错

  • 在drools workbench中,我创建了java类来获取entitymanager,并在drl文件中使用它,但我的问题是 当我在workbench中创建新项目时,我会像maven一样创建项目结构 当我打电话给全班的时候,像贝娄一样 persistence.xml像贝娄 还有pom。类xml 当我试图调用工厂类时,我没有为名为XXX的持久性提供程序 新工厂类