如何在 jpa 中为 mysql 设置默认当前日期

How to set default current date in jpa for mysql

我正在尝试自动生成当前日期但出现此错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server 
version for the right syntax to use near 'CURRENT_DATE' at line 1
@Column(name = "ddate", columnDefinition = "DATE DEFAULT CURRENT_DATE")
private Date ddate;

我建议尝试将 CreationTimestamp 注释与 nullable = false, updatable = false

搭配使用
@Column(name = "ddate", nullable = false, updatable = false)
@CreationTimestamp
private Date ddate;

以上策略使用了当前的 VM 日期,所以如果您同意,请使用它。

作为@cjnash 答案的替代方案,Spring 提供了 @CreatedDate 注释来跟踪实体的创建时间。

这些注释的主要区别是 @CreationTimestamp 仅适用于 Hibernate@CreatedDate 适用于 [=50] 涵盖的所有商店=] 数据:JPA、JDBC、R2DBC、MongoDb、Cassandra 等.

但要使其正常工作,配置步骤很少。

  1. 使用 '@EntityListeners' 注释对实体 class 进行注释。

  2. 通过使用 '@CreatedDate' 注释来创建字段。

  3. @EnableJpaAuditing注释添加到'App'class。 此注释用于通过注释配置在 JPA 中启用审计。

     // Entity Class
     @Entity
     @Table(name = "my_employee")
     @EntityListeners(AuditingEntityListener.class)
     public class Employee {
     .....
     .....
     @CreatedDate
     @Column(name = "ddate")
     private Date ddate;
    
     .....
     .....
    
     }
    
     // App Class
     @SpringBootApplication
     @EnableJpaAuditing
     public class App {
     .....
     .....
     }
    

查看此 example 了解更多详情。