web-dev-qa-db-ja.com

ロンボク:RequiredArgsConstructorが機能しない

以下のコードでは@RequiredArgsConstructorが機能していないようです。それはなぜです?

import Java.io.Serializable;

import lombok.Data;
import lombok.RequiredArgsConstructor;

@Data
@RequiredArgsConstructor
public class User implements Serializable {

    private String username;

    /*public User(String username) {
        this.username = username;
    }*/

    private static final long serialVersionUID = 8043545738660721361L;
}

エラーが表示されます:

javax.faces.el.EvaluationException: Java.lang.Error: Unresolved compilation problem: 
    The constructor User(String) is undefined

何らかの理由で、コンストラクターが定義されていない代わりに@RequiredArgsConstructorアノテーションを使用した他のドメインクラスで機能するようです。

11
rozerro

Documentation によると、必須引数は最終フィールドおよび@NonNullなどの制約を持つフィールドです。

ユーザー名を@NonNullにする必要があります

@NonNull private String username;

そして、あなたもそれらを最終的にする必要があります。

25
a3.14_Infinity

また、将来の読者にとって @ Data@ RequiredArgsConstructor を提供することに注意する価値があるため、両方の注釈を使用する必要はありません:)

3
adrianostgard