繁体   English   中英

在创建实体 class 时,SpringBoot 有没有办法为字段添加默认数据?

[英]Is there a way in SpringBoot to add default data for fields while the entity class is being created?

这是我的实体 class,这代表根据发生在另一个实体上的交易更新 accountBalance 的账户,

@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MainAccounts {
     @Id
        private Long id  ;
        @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
        private LocalDate date
        private Double AccountBalance;
        
       
        public Double getAccountBalance() {
            return AccountBalance;
        }
        public void setAccountBalance(Double accountBalance) {
            AccountBalance = accountBalance;
        }
        public Long getId() {
            return id;
        }
        public void setId(Long id) {
            this.id = id;
        }
        public LocalDate getDate() {
            return date;
        }
        public void setDate(LocalDate date) {
            this.date = date;
        }
        

创建实体后,我可以像这样将默认值添加到我的帐户表中吗?

ID 日期 账户余额
1个 null 0.00

只是我不希望表有 null 个值,当我调用 getId() 或 getaccountBalance() 方法时

您已经在使用@Data ,这意味着您不需要手动编写 getter 和 setter,因为 Lombok 将在后台生成它,只需使用 setDate(您的日期在这里),并对所有 getter 和 setter 应用相同的概念方法,

注意:如果日期代表创建日期,您可以使用此注释设置上述日期变量@CreationTimestamp

实际上你可以通过 @Column 注释来设置它。

https://www.baeldung.com/jpa-default-column-values

To create a default value directly in the SQL table definition, we can use the @Column annotation and set its columnDefinition parameter:
    @Column(columnDefinition = "varchar(255) default 'John Snow'")
    private String name;

    @Column(columnDefinition = "integer default 25")
    private Integer age;

您可以使用来自@PrePersist的@PrePersist。

public class MainAccounts {

    @PrePersist
    public void prePersist() {
        this.accountBalance = 0.0;
        // any value setting before saving
    }

}

您可能还想访问在更新托管实体之前调用的@PreUpdate

您可以尝试直接设置到实体属性

private String name = "default";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM