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



所以我四处搜索,找到了几个关于如何在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,而不是我试图定义的默认值。如果我检查数据库中的列定义,也没有设置默认值。如果我用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;

最新更新