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

解决Spring Boot中Hibernate执行DDL创建表的CommandAcceptanceException错误

解决Hibernate执行CREATE TABLE DDL失败的CommandAcceptanceException问题

针对你遇到的问题,核心有两个错误点,逐一修复即可解决:

1. 修复modified_at字段的SQL语法错误

错误根源是Hibernate生成的DDL中modified_at字段的ON UPDATE后缺少内容,导致MySQL执行CREATE TABLE时语法报错。

修复步骤:

检查实体类中modified_at字段的注解配置,确保生成正确的DDL语句:

  • 如果你使用Hibernate的时间戳注解,直接用@UpdateTimestamp即可自动生成正确的更新逻辑:
@UpdateTimestamp
@Column(name = "modified_at", nullable = false)
private LocalDateTime modifiedAt;
  • 如果你自定义columnDefinition,必须补充完整的ON UPDATE规则:
@Column(
    name = "modified_at",
    columnDefinition = "DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP",
    nullable = false
)
private LocalDateTime modifiedAt;

2. 修复实体类getter/setter拼写错误

实体类中getPaymentInfo()、setVaccinationStatus()方法存在拼写错误,违反JavaBean规范,会导致Hibernate字段映射异常,间接引发DDL执行失败。

修复步骤:

  • 核对字段名与对应的getter/setter方法名,严格遵循JavaBean命名规则:
    • 若字段为paymentInfo,getter必须是getPaymentInfo(),setter为setPaymentInfo(...)
    • 若字段为vaccinationStatus,getter必须是getVaccinationStatus(),setter为setVaccinationStatus(...)
  • 建议使用Eclipse的自动生成功能(Source -> Generate Getters and Setters)生成方法,避免手动拼写错误。

额外验证步骤

  1. 确认朋友的MySQL版本为8.0.33,与你的本地环境一致
  2. 检查项目的Hibernate方言配置,Spring Boot 2中需指定MySQL8方言:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
  1. 在Eclipse中执行Project -> Clean,然后运行Maven -> Clean Install清理缓存并重新构建项目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:37:01