我有以下的(简化)类:龙目岛建造者在Spring数据缺省
@Entity
@Data
@Builder
@NoArgsConstructor // @Builder creates the all-args version but I need this one elsewhere.
@AllArgsConstructor(access = AccessLevel.PRIVATE) // Having @NoArgsConstructor disables the @AllArgsConstructor needed by @Builder unless I have this explicitly applied
public class MyClass {
// ...
@Builder.Default
private String foo = "Some Default Value"
// ...
}
这正常在一般情况下,但问题来了什么时候该实体得到由春(尤其是Spring数据建存储库以响应创建它的REST请求)。 Spring会看到全参数构造函数并使用它,为foo设置一个空值(在这种情况下,它不是在POST数据中设置的),并且最终以foo为空值而不是预期的"Some Default Value"
。 @Builder.Default
。
简单地创建setter并防止null值不起作用。我可以明确地写出AllArgsConstructor,但这(有点)在某种程度上击败了Lombok的目的。不是一个可怕的解决方案,但并不理想。
任何人都可以想到这方面的任何解决方法?
您是否尝试更改AccessType。尝试在类 – pvpkiran
上使用'@AccessType(AccessTpe.FIELD)',我看不出如何工作。 AccessType是关于数据层如何获得要被持久化的值,对吧?直接通过现场或通过访问器。此外,默认情况下已经是字段访问,所以这不会是一个变化,我不认为。 –