Ломбок: 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.

Ответ 1

Согласно Документация, Обязательные аргументы - это конечные поля и поля с ограничениями, такими как @NonNull.

Вам нужно сделать имя пользователя как @NonNull

@NonNull private String username;

И вы также должны сделать их окончательными.

Ответ 2

Также стоит отметить для будущих читателей, что @Data также предоставляет @RequiredArgsConstructor, поэтому использование обеих аннотаций не обязательно :)

Ответ 3

Вы установили плагин Lombok в intellij?

Если нет, то

File -> Settings -> Plusings: Search for Lombok (CodeStream) version.

Перезапустите IDE, и это должно быть исправлено.

Двойная проверка:

  • У вас установлена библиотека Lombok с использованием Maven или Gradle.
  • Включен Annotation Processors из intellij IDE из File -> Settings: Search for Annotation Processors