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

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

尉迟明贤
2023-03-14

我试图在Eclipse中测试我的hibernate maven应用程序,当我运行获取enttity类名称的方法时,我得到了以下异常:

jun. 01, 2021 9:52:51 P. M.       
javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver log
WARNING: javax.persistence.spi::No valid providers found.
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for           
EntityManager named OtraReunionMas
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at com.linkedin.learning.otrareunionmas.utiles.EntityManagerUtil.getEntityManager(EntityManagerUtil.java:9)
at com.linkedin.learning.otrareunionmas.utiles.EntityManagerUtil.main(EntityManagerUtil.java:15)

这是persistence.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="OtraReunionMas" transaction-type="RESOURCE_LOCAL">
   <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
   <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306
      /otrareunionmas"/>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="javax.persistence.jdbc.user" value="xxxx"/>
      <property name="javax.persistence.jdbc.password" value="xxxx"/>
      <property name="javax.persistence.schema-generation.database.action" value="update"/>
      <property name="hibernate.dialect" value = "org.hibernate.dialect.MySQL8Dialect"/>
   </properties>
 </persistence-unit>
 </persistence>

这是使用以下方法的类:

 package com.linkedin.learning.otrareunionmas.utiles;

 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.Persistence;

 public class EntityManagerUtil {

 public static EntityManager getEntityManager() {
    EntityManagerFactory factory = Persistence.createEntityManagerFactory("OtraReunionMas");
    EntityManager manager = factory.createEntityManager();
    return manager;
 }

public static void main(String[] args) {
    EntityManager manager = EntityManagerUtil.getEntityManager();
    System.out.println("EntityManager class ==> " + manager.getClass().getCanonicalName());
}
}

波姆。xml:

<?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>com.linkedin.learning</groupId>
<artifactId>otrareunionmas</artifactId>
<version>0.0.1-SNAPSHOT</version>

<name>otrareunionmas</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>

<properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <maven.compiler.source>1.7</maven.compiler.source>
   <maven.compiler.target>1.7</maven.compiler.target>
</properties>

<dependencies>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
   <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>8.0.25</version>
   </dependency>
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>5.4.16.Final</version>
  <type>pom</type>
</dependency>

</dependencies>
      <artifactId>maven-clean-plugin</artifactId>
      <version>3.1.0</version>
    </plugin>
    <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-
     core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
    <plugin>
      <artifactId>maven-resources-plugin</artifactId>
      <version>3.0.2</version>
    </plugin>
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.0</version>
    </plugin>
    <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.22.1</version>
    </plugin>
    <plugin>
      <artifactId>maven-jar-plugin</artifactId>
      <version>3.0.2</version>
    </plugin>
    <plugin>
      <artifactId>maven-install-plugin</artifactId>
      <version>2.5.2</version>
    </plugin>
    <plugin>
      <artifactId>maven-deploy-plugin</artifactId>
      <version>2.8.2</version>
    </plugin>
    <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-
    core/lifecycles.html#site_Lifecycle -->
    <plugin>
      <artifactId>maven-site-plugin</artifactId>
      <version>3.7.1</version>
    </plugin>
    <plugin>
      <artifactId>maven-project-info-reports-plugin</artifactId>
      <version>3.0.0</version>
    </plugin>
  </plugins>
</pluginManagement>
</build>
</project>

我尝试更改持久性的版本号、更改xmlns、提供程序的名称,但仍然是例外。

共有1个答案

黄景胜
2023-03-14

摆脱

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

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

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

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

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

  • 我得到了这个错误: 线程“main”javax中出现异常。坚持不懈PersistenceException:在javax上没有名为EmployeeDb的EntityManager的持久性提供程序。坚持不懈坚持不懈javax上的createEntityManagerFactory(Persistence.java:85)。坚持不懈坚持不懈staffManagement的createEntityMan