gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 21:48:37 24 4
gpt4 key购买 nike

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

但它不起作用,这些值在数据库中设置为空,而不是我尝试定义的默认值。如果我检查数据库内的列定义,也没有设置默认值。如果我使用 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;

关于java - 无法在 JPA 中设置列​​的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58771382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com