【发布时间】:2019-11-08 17:37:40
【问题描述】:
所以我四处搜索并找到了几个关于如何在 JPA 中设置默认值的答案,例如:here
但没有一个答案对我有用。
我有以下实体:
@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,但也无法在那里找到任何东西。
【问题讨论】: