以下のコードでは@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
アノテーションを使用した他のドメインクラスで機能するようです。
Documentation によると、必須引数は最終フィールドおよび@NonNullなどの制約を持つフィールドです。
ユーザー名を@NonNullにする必要があります
@NonNull private String username;
そして、あなたもそれらを最終的にする必要があります。
また、将来の読者にとって @ Data が @ RequiredArgsConstructor を提供することに注意する価値があるため、両方の注釈を使用する必要はありません:)