【问题标题】:Cant set the defaultvalue of a column in JPA无法在 JPA 中设置列​​的默认值
【发布时间】: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,但也无法在那里找到任何东西。

【问题讨论】:

    标签: java sql hibernate jpa


    【解决方案1】:

    您可以在您的实体中尝试以下类似的操作

    @Entity
    public class MyJPAEntity {
    
    
    
    @CreationTimestamp
    private LocalDateTime createDateTime;
    
    @UpdateTimestamp
    private LocalDateTime updateDateTime;
    
    }
    

    你也可以试试

    @Column(nullable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
    private LocalDateTime createDate;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 2021-12-03
      • 2014-07-28
      • 1970-01-01
      • 2011-05-29
      • 2015-03-28
      • 1970-01-01
      相关资源
      最近更新 更多