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

@CreationTimestamp不生效,data.sql插入报created_date无默认值如何解决

生效JPA自动填充创建时间的配置

若使用Hibernate原生@CreationTimestamp注解

确保字段上的注解引入的是org.hibernate.annotations.CreationTimestamp包下的实现,无需额外配置,调用JPA的save()方法插入数据时会自动填充当前时间。

若使用Spring Data JPA审计注解@CreatedDate

需要完成3项配置:

  • 项目启动类添加@EnableJpaAuditing注解,开启JPA审计功能
  • User实体类顶部添加@EntityListeners(AuditingEntityListener.class)注解,绑定审计监听器
  • createdDate字段上添加@CreatedDate注解

解决data.sql执行报错问题

data.sql是Spring Boot启动阶段直接执行的原生SQL,不会经过Hibernate的实体处理逻辑,所以@CreationTimestamp注解对这类SQL不生效,可选择以下任意一种方案解决:

  • 方案1:修改插入语句,手动传入创建时间
INSERT INTO users(email,enabled,password,username,provider,created_date) 
VALUES('abc@gmail.com',1,'$2a$10$ideoxDhZo1MP9eW.A4UC0.4iPeDeCNM9yVMGQFpzTz04OZp9nxw5S','username','local',NOW());
  • 方案2:给数据库字段设置默认值,修改createdDate的@Column配置,让Hibernate自动建表时添加默认值规则
@CreationTimestamp
@Column(nullable = false, updatable = false, columnDefinition = "DATETIME DEFAULT CURRENT_TIMESTAMP")
private Date createdDate;

配置后即使插入语句不传入created_date字段,数据库也会自动填充当前时间作为默认值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:36:03