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

使用Vaadin创建H2数据库Upload表时执行DDL报错

解决Vaadin+H2创建Upload表失败的问题

问题根源

报错核心原因是UPLOAD是H2数据库的保留关键字,直接用它作为表名会触发SQL语法冲突,导致Hibernate执行DDL语句失败。

解决方案

1. 修改实体类表名映射

在Upload实体类上通过@Table注解指定非保留字表名,比如file_upload:

@Entity
@Table(name = "file_upload")
public class Upload {
    // 你的实体字段、主键等配置
}

2. 可选:用反引号包裹保留字表名

如果坚持使用upload作为表名,可在注解中用反引号包裹(H2支持该语法):

@Entity
@Table(name = "`upload`")
public class Upload {
    // ...
}

3. 清理残留并重启

  • 删除H2数据库的本地文件(若使用文件存储模式),避免旧表结构干扰
  • 重启应用,让Hibernate重新生成正确的表结构

4. 优化字段类型(可选)

注意到import_date被映射为bigint,如果实体类中是日期类型(如LocalDateTime),建议调整为H2的TIMESTAMP类型,避免后续数据操作异常:

@Column(name = "import_date", columnDefinition = "TIMESTAMP")
private LocalDateTime importDate;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:05:28