所以我四处搜索,找到了几个关于如何在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;