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

JPA对接MySQL如何设置默认当前日期,CURRENT_DATE语法报错如何解决

报错根因

你遇到的语法报错是由于MySQL版本的默认值规则限制:

  • MySQL 5.7及更低版本仅允许TIMESTAMP、DATETIME类型直接使用CURRENT_TIMESTAMP作为默认值,不支持DATE类型直接使用CURRENT_DATE做默认值
  • MySQL 8.0及以上版本支持表达式作为默认值,但需要将表达式用括号包裹,否则会触发语法解析错误

解决方案

  • 方案1:使用JPA自带的自动填充注解(全版本通用,不依赖数据库默认值规则)
    直接用Hibernate提供的@CreationTimestamp注解,实体持久化时会自动填充当前日期,无需配置数据库默认值:
@Column(name = "ddate")
@CreationTimestamp
private Date ddate;

如果使用JPA 2.2+的Java 8时间API,也可以对应将字段类型改为LocalDate,注解配置不变。

  • 方案2:调整字段类型适配数据库规则
    如果需要在数据库层面设置默认值,且可以接受用DATETIME存储日期时间,修改注解配置即可:
@Column(name = "ddate", columnDefinition = "DATETIME DEFAULT CURRENT_TIMESTAMP")
private Date ddate;
  • 方案3:适配MySQL 8.0+的DATE类型默认值规则
    如果你使用的是MySQL 8.0及以上版本,只需要给默认值表达式加上括号即可解决语法报错:
@Column(name = "ddate", columnDefinition = "DATE DEFAULT (CURRENT_DATE)")
private Date ddate;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:45:02