You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hibernate无法找到持久化名称?服务器启动抛PersistenceException异常

解决Tomcat启动时HibernateListener初始化失败的问题

Hey there, let's tackle this error you're hitting when starting your Tomcat server. First, let's restate the key error to make sure we're on the same page:

03-Apr-2018 15:51:30.407 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.listenerStart 向org.nobody.myapp.servlet.HibernateListener类的监听器实例发送上下文初始化事件时发生异常 javax.persistence.PersistenceException: 找不到名为theDB的EntityManager的持久化提供者 at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61) at javax.persistence.Persiste...

This error boils down to the JPA Persistence API not being able to find a valid persistence provider for your named entity manager theDB. Here are the most common fixes to try:

1. Verify your persistence.xml location and basic configuration

  • Location matters: For web apps, this file must live in WEB-INF/classes/META-INF/ (if you're building with Maven/Gradle, this translates to src/main/resources/META-INF/persistence.xml in your source code). If it's in the wrong place, the JPA API won't pick it up.
  • Check the persistence unit name: Make sure the <persistence-unit name="theDB"> in your persistence.xml matches exactly the name you're passing to Persistence.createEntityManagerFactory("theDB") — this is case-sensitive!
  • Specify the persistence provider: Add a <provider> tag inside your persistence unit to explicitly tell JPA which provider to use. For Hibernate, this should be:
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    

2. Ensure all required dependencies are present

  • If you're using a build tool like Maven, double-check your pom.xml includes the necessary Hibernate/JPA dependencies. For example:
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.4.32.Final</version> <!-- Use a compatible version for your project -->
    </dependency>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <version>1.0.2.Final</version>
    </dependency>
    <!-- Don't forget your JDBC driver, e.g., for MySQL -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.28</version>
    </dependency>
    
  • For non-build-tool projects, confirm all these JAR files are present in WEB-INF/lib of your deployed WAR, or in Tomcat's lib directory (though putting app-specific libs in WEB-INF/lib is better practice).

3. Validate your persistence unit's database configuration

  • Double-check the connection properties in your persistence.xml are correct. A basic example for a local MySQL database would look like:
    <persistence-unit name="theDB" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>org.nobody.myapp.model.YourEntityClass</class> <!-- List all your entity classes here, or use <exclude-unlisted-classes>false</exclude-unlisted-classes> -->
        <properties>
            <property name="hibernate.connection.driver_class" value="com.mysql.cj.jdbc.Driver"/>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC"/>
            <property name="hibernate.connection.username" value="your_db_user"/>
            <property name="hibernate.connection.password" value="your_db_password"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/> <!-- Adjust based on your needs -->
        </properties>
    </persistence-unit>
    
  • If you're using a container-managed data source (via JNDI), ensure the <jta-data-source> or <non-jta-data-source> value matches the JNDI name you configured in Tomcat's context.xml, and that the data source itself is set up correctly.

Start with these checks — most of the time, this error is caused by a missing configuration file, a typo in the persistence unit name, or missing dependencies. Let me know if you hit any snags while working through this!

内容的提问来源于stack exchange,提问作者dacracot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:25:53