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

添加相关Jar包仍遇org.hibernate.ConfigurationException异常求助

Hibernate保存MySQL数据时触发ConfigurationException异常排查

问题概述

尝试用Hibernate实现向MySQL数据库保存数据的基础示例,已添加相关Jar包,但运行CreateStudentDemo.java时抛出org.hibernate.internal.util.config.ConfigurationException异常。

核心代码与配置

CreateStudentDemo.java

package com.aris.hibernate.demo;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.aris.hibernate.demo.entity.Student;

public class CreateStudentDemo {
    public static void main(String[] args) {
        // 创建Session工厂
        SessionFactory factory = new Configuration()
                                            .configure()
                        .addAnnotatedClass(Student.class)
                        .buildSessionFactory();
        // 创建Session
        Session session = factory.getCurrentSession();
        
        try {
            // 用Session保存Java对象
            
            // 创建Student对象
            System.out.println("Creating a new student...");
            Student student = new Student("Paul","Wood","paulwood44@gmail.com");
            // 开启事务
            session.beginTransaction();
            // 保存Student
            System.out.println("Saving the student...");
            session.save(student);
            // 提交事务
            session.getTransaction().commit();
        }catch(Exception e) {}
        finally {
            factory.close();
        }
    }
}

hibernate.cfg.xml配置

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- JDBC数据库连接配置 -->
        <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/hb_student_tracker?useSSL=false&amp;serverTimezone=UTC</property>
        <property name="connection.username">hbstudent</property>
        <property name="connection.password">hbstudent</property>

        <!-- JDBC连接池配置 -->
        <property name="connection.pool_size">1</property>

        <!-- SQL方言配置 -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- 打印SQL语句到控制台 -->
        <property name="show_sql">true</property>

        <!-- 当前Session上下文配置 -->
        <property name="current_session_context_class">thread</property>
 
    </session-factory>

</hibernate-configuration>

项目环境信息

  • 目录结构:src源码目录下分为com.aris.hibernate.demo(存放主类)和com.aris.hibernate.demo.entity(存放Student实体类),resources目录存放hibernate.cfg.xml,lib目录存放所有依赖Jar包。
  • 依赖Jar包:包含Hibernate核心相关包、MySQL JDBC驱动包等基础依赖。

排查与解决建议

  1. 修复异常捕获逻辑
    代码中catch(Exception e) {}直接吞噬了异常,无法获取具体错误信息。修改为以下代码,打印完整异常堆栈:

    catch(Exception e) {
        e.printStackTrace();
    }
    

    这是定位问题的关键,能明确是配置文件找不到、语法错误还是数据库连接参数问题。

  2. 检查配置文件路径
    确保hibernate.cfg.xml放在项目的resources根目录下,Hibernate默认从类路径根目录加载该配置文件,路径错误会直接触发ConfigurationException。

  3. 修正SQL方言配置
    如果使用的是MySQL 8.0及以上版本,当前配置的org.hibernate.dialect.MySQLDialect已过时,需替换为:

    <property name="dialect">org.hibernate.dialect.MySQL8Dialect</property>
    

    方言不匹配会导致Hibernate无法正确生成适配的SQL语句,进而触发配置异常。

  4. 验证Jar包完整性与版本兼容性

    • 确认所有Hibernate核心依赖包都已添加,避免缺失hibernate-core、jboss-logging等关键包。
    • 确保MySQL JDBC驱动版本与MySQL服务器版本兼容,比如MySQL 8.0对应mysql-connector-java:8.x版本。
  5. 检查XML配置语法
    用XML校验工具检查hibernate.cfg.xml的语法是否正确,比如标签是否闭合、属性值是否合法,XML语法错误会导致Hibernate无法解析配置文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:04:54