How to assign default value to the member variable of embedded class in an entity using lombok?

Viewed 283

I have an embedded class in my entity. To set the default values for method variables, I've used lombok builder default. But for embedded class, it is not applying.

Entity Class

@Entity
@Table
@Data
@Builder
class EntityClass{

  @Builder.Default
  private String someVariable = "";

  @Embedded
  private Address address;

}

Embedded Class

@Embeddable
@Data
@Builder
class Address{

  @Builder.Default
  private String someVariable = "";

  @Builder.Default
  private String someOtherVariable = "";

}

For Address default values are not applying and I'm getting null if I don't set values.

2 Answers

If you are instantiating the EntityClass using its builder and while setting the field with type Address, you are using Address.builder() then the default values will be assigned with their default values.

For example:

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

Basically, @Builder.Default requires a value to be assigned. In normal cases, we used to assign like,

@Builder.Default
private String someString = "";

@Builder.Default
private Integer someInteger = 0;

In the same manner Address needs to be initialized.

I've used the builder in embedded class.

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

It works!

Related