I持って、次の(簡体字)クラス:ロンボクビルダー
@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"
// ...
}
これは一般的なケースでは正常に動作しますが、問題は、このエンティティは、春(特に春データによって構築されます時期についてきますそれを作成するためのREST要求に応答するリポジトリ)。 Springはall-argsコンストラクタを見て、それを使用してfooのヌル値を設定します(この場合、POSTデータに設定されていません)、fooのNULL値は、"Some Default Value"
の代わりになります。 @Builder.Default
。
単純にセッターを作成してヌルを防ぐのは機能しません。私はAllArgsConstructorを明示的に書き出すことができましたが、それはある程度ロンボクの目的を打ち負かしています。恐ろしい解決策ではなく、理想的ではありません。
誰もがこのための任意の回避策を考えることができますか?
アクセスタイプを変更してみましたか。クラス – pvpkiran
でこの '@AccessType(AccessTpe.FIELD)'を試してください。どうすればそれが動作するのかわかりません。 AccessTypeは、永続化される値をデータレイヤが取得する方法です。直接フィールドを介して、またはアクセサを介して。また、デフォルトではすでにフィールドにアクセスしているので、これは変更されていないと思います。 –