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

Jakarta JPA+Hibernate配置报错:The application must supply JDBC connections

解决“The application must supply JDBC connections”错误(Jakarta JPA + Hibernate)

问题根源

  1. 命名空间与属性前缀不匹配:Hibernate 5.4.x 基于JPA 2.2(Java EE规范),但你的persistence.xml使用了Jakarta EE 3.0的命名空间,且用了jakarta.persistence.*前缀的属性,导致Hibernate无法识别JDBC连接配置,被迫进入“用户手动提供连接”模式。
  2. MySQL方言与驱动版本不兼容:使用了MySQL 8.0驱动,但配置的是旧版MySQLDialect,无法适配新版MySQL的特性。
  3. JDBC URL未配置有效值:配置中的MyURL是占位符,必须替换为真实的数据库连接地址。

解决方案

1. 修正persistence.xml配置

改用JPA 2.2的命名空间与属性前缀,同时适配MySQL 8.0的方言:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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_2.xsd"
             version="2.2">
    <persistence-unit name="supermercado">
        <class>Cliente</class>
        <properties>
            <!-- JPA 2.2标准属性前缀 -->
            <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
            <!-- 替换为真实JDBC地址,示例格式:jdbc:mysql://localhost:3306/你的数据库名?serverTimezone=UTC&useSSL=false -->
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/supermercado?serverTimezone=UTC&useSSL=false"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value=""/>

            <!-- 适配MySQL 8.0的方言 -->
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
            <property name="hibernate.hbm2ddl.auto" value="create"/>
        </properties>
    </persistence-unit>
</persistence>

2. 调整依赖版本一致性

Hibernate 5.4.x与Jakarta EE 3.0的依赖存在冲突,调整JAXB依赖为Java EE版本,避免兼容性问题:

dependencies {
    implementation('org.hibernate:hibernate-core:5.4.24.Final')
    implementation('org.glassfish.jaxb:jaxb-runtime:2.3.6') // 改用Java EE规范的JAXB版本
    implementation("mysql:mysql-connector-java:8.0.31") // 与Hibernate 5.x兼容的MySQL驱动坐标
    testImplementation("org.junit.jupiter:junit-jupiter-api:${junitVersion}")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
}

3. 额外验证项

  • 确认MySQL服务处于运行状态,JDBC URL中的主机、端口、数据库名称完全正确。
  • 检查Cliente类是否添加了@Entity、@Id等必要的JPA注解,且类文件在类路径下可被Hibernate扫描到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:50:25