Java 无法在JPA中设置列的默认值
所以我四处搜索,找到了一些关于如何在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
@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;