Java 无法在JPA中设置列的默认值

Java 无法在JPA中设置列的默认值,java,sql,hibernate,jpa,Java,Sql,Hibernate,Jpa,所以我四处搜索,找到了一些关于如何在JPA中设置默认值的答案,例如: 但没有一个答案对我有用 我拥有以下实体: @Data @Entity @JsonInclude(JsonInclude.Include.NON_NULL) public class Project { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; @Column(unique = true) private St

所以我四处搜索,找到了一些关于如何在JPA中设置默认值的答案,例如:

但没有一个答案对我有用

我拥有以下实体:

@Data
@Entity
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Project {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private long id;

  @Column(unique = true)
  private String name;

  private Integer budget;

  private String description;

  private Boolean isArchived;

  private LocalDate archivedDate;

  @NotNull
  @ManyToOne
  private Customer customer;
}
我想添加一个类型为
LocalDate
的新字段
date
,并将其默认值设置为
LocalDate.now()
,以便表中的每个现有项目都将
LocalDate.now
作为
date
属性的值

所以我试着用推荐的方法来做:

@Column(name="date")
private LocalDate date = LocalDate.now();
但它不起作用,数据库中的值被设置为null,而不是我试图定义的默认值。如果我检查数据库中的columndefinition,也没有设置defaultvalue。如果我用SQL手动添加新列,并在那里设置默认值,一切都按预期进行,我就是无法用JPA获得它


我也尝试过玩
columnDefinition
,但也无法在那里找到任何工作。

您可以在实体中尝试下面的方法

@Entity
public class MyJPAEntity {



@CreationTimestamp
private LocalDateTime createDateTime;

@UpdateTimestamp
private LocalDateTime updateDateTime;

}

你也可以试试

@Column(nullable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
private LocalDateTime createDate;