【发布时间】:2021-07-27 07:28:41
【问题描述】:
我最近将 Lombok 从 1.16.22 升级到 1.18.20,Spring boot 从 2.1.13 升级到 2.2.13,Mapstruct 从 1.2.0 升级到 1.4.2,并开始看到这种奇怪的行为。
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Basket {
...
private List<Discount> discounts = new ArrayList<>();
...
public Basket(UUID id) {
this.id = id;
}
在升级之前,当调用单参数构造函数时,“折扣”将使用空的 ArrayList 进行初始化。但是,现在我看到“折扣”的初始值为 null。我正在尝试缩小升级或导致这种行为变化的事情的范围,但我不知道从哪里开始。当我调用单参数构造函数时,我既没有使用映射器逻辑,也没有使用生成的构造函数。有没有人遇到过类似的问题?
【问题讨论】:
-
MapStruct 通过生成
.java文件来工作。您可以检查它们,看看它们是否在做类似明确设置这些值的操作。 -
这看起来很奇怪。你有没有尝试在课堂上delombok?
-
尝试将
@Builder.Default或@Singular放在discounts上。
标签: java spring spring-boot lombok mapstruct