【问题标题】:How to assign default value to the member variable of embedded class in an entity using lombok?如何使用lombok为实体中嵌入类的成员变量分配默认值?
【发布时间】:2020-12-27 01:47:57
【问题描述】:

我的实体中有一个嵌入式类。为了设置方法变量的默认值,我使用了 lombok builder default。但是对于嵌入式类,它不适用。

实体类

@Entity
@Table
@Data
@Builder
class EntityClass{

  @Builder.Default
  private String someVariable = "";

  @Embedded
  private Address address;

}

嵌入式类

@Embeddable
@Data
@Builder
class Address{

  @Builder.Default
  private String someVariable = "";

  @Builder.Default
  private String someOtherVariable = "";

}

对于地址,默认值不适用,如果我不设置值,我会得到空值。

【问题讨论】:

  • 请添加使用builder创建EntityClass的代码

标签: java spring spring-boot spring-data-jpa lombok


【解决方案1】:

如果您使用其构建器实例化EntityClass,并且在设置类型为Address 的字段时,您使用的是Address.builder(),则默认值将被分配为其默认值。

例如:

EntityClass entity = EntityClass.builder().address(Address.builder().build()).build();

【讨论】:

  • 感谢您的回答。我认为在实体类中分配对象对于处理所有实例的默认值是有意义的。
【解决方案2】:

基本上,@Builder.Default 需要分配一个值。在正常情况下,我们习惯于分配like,

@Builder.Default
private String someString = "";

@Builder.Default
private Integer someInteger = 0;

以同样的方式Address需要被初始化。

我在嵌入式类中使用了构建器。

@Embedded
@Builder.Default
private Address address = Address.builder.build();

有效!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 2020-11-27
    • 2019-12-25
    • 2021-05-16
    • 2017-03-12
    相关资源
    最近更新 更多