解决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)生成方法,避免手动拼写错误。
额外验证步骤
- 确认朋友的MySQL版本为8.0.33,与你的本地环境一致
- 检查项目的Hibernate方言配置,Spring Boot 2中需指定MySQL8方言:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
- 在Eclipse中执行
Project -> Clean,然后运行Maven -> Clean Install清理缓存并重新构建项目
内容的提问来源于stack exchange,提问作者Tauheed Patel
相关产品推荐
相关产品推荐

