Spring Boot JPA保存实体报错Column 'created_at' cannot be null怎么办
问题原因及解决方案
这个报错是Spring Data JPA的审计功能未生效导致created_at字段没有被自动填充值,核心原因和修复方法如下:
- 缺失审计功能总开关注解
你已经在审计父类配置了AuditingEntityListener和@CreatedDate注解,但Spring Data JPA的审计功能默认是关闭的,需要在配置类或启动类上添加@EnableJpaAuditing注解才能触发自动填充逻辑,这是这类问题最常见的遗漏点。
修复示例(加在Spring Boot启动类上即可):
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; @SpringBootApplication @EnableJpaAuditing // 新增这行开启JPA审计 public class StoreApplication { public static void main(String[] args) { SpringApplication.run(StoreApplication.class, args); } }
- 补充排查点(如果加了注解仍报错)
- 确认
@CreatedDate、@LastModifiedDate注解的包路径是org.springframework.data.annotation,不要误引入其他框架的同名注解(你当前代码的引包是正确的) - 确认实体类保留了无参构造方法,你使用了Lombok的
@NoArgsConstructor注解,该配置正常,JPA需要无参构造完成实例化后触发审计字段填充,你之前新增业务字段构造方法的操作对审计字段填充没有影响,不需要额外调整。
- 确认
内容的提问来源于stack exchange,提问作者zakpruitt
相关产品推荐
相关产品推荐

