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

Hibernate报错:MySQL未找到USERS表,无法识别users表数据

问题:应用无法识别MySQL数据库中users表的现有数据

基础信息

  • 数据库名称:nutzer
  • 表名称:users(小写,非大写USERS)
  • 技术实现:通过Hibernate配置JPA连接MySQL
  • 错误提示:[未找到表“USERS”(该数据库为空)]

已执行的排查操作

  • 反复核对表名,确认数据库中表定义为users
  • 通过MySQL Workbench验证users表中存在测试数据
  • 检查JPA配置参数

相关代码片段

Entity类代码

package de.likeherotozero;

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

@Entity
@Table(name = "users", schema = "nutzer")

public class EmissionsData {
    @Id
    private Long id;
    private String country;
    private double value;

    // Getters and Setters
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
    public double getValue() {
        return value;
    }
    public void setValue(double value) {
        this.value = value;
    }
}

persistence.xml配置

<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_1.xsd"
             version="2.1">

    <persistence-unit name="my-persistence-unit">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>de.likeherotozero.User</class>
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/nutzer"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="myCorrectPassword is here"/>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>

解决建议

  • 修正Entity类与配置的匹配问题:配置文件<class>标签指定的是de.likeherotozero.User,但实际Entity类是EmissionsData,两者不匹配导致Hibernate无法正确映射到users表,需将<class>改为de.likeherotozero.EmissionsData。
  • 处理MySQL大小写敏感性:Linux系统下MySQL默认区分表名大小写,若运行环境为Linux,可在JDBC URL添加参数?lower_case_table_names=1强制不区分大小写,示例:jdbc:mysql://localhost:3306/nutzer?lower_case_table_names=1。
  • 移除冗余的schema配置:JDBC URL已指定数据库nutzer,@Table注解中的schema="nutzer"可能造成冲突,可改为@Table(name = "users")。
  • 核对Entity与表字段一致性:确认EmissionsData的字段(id、country、value)与users表的字段名称、数据类型完全匹配,避免因字段不匹配导致Hibernate无法识别表。
  • 开启SQL日志排查:在persistence.xml中添加以下配置,查看Hibernate实际执行的SQL语句,确认查询表名是否正确:
    <property name="hibernate.show_sql" value="true"/>
    <property name="hibernate.format_sql" value="true"/>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:35:12