Lombok: RequiredArgsConstructor not working

rozerro picture rozerro · Jun 7, 2016 · Viewed 41k times · Source

It seems that @RequiredArgsConstructor not working in the code below. Why is it?

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;
}

I get the error:

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

For some reason seems it does work for other domain class in which no constructor defined but instead used the @RequiredArgsConstructor annotation.

Answer

a3.14_Infinity picture a3.14_Infinity · Jun 7, 2016

According to Documentation, Required arguments are final fields and fields with constraints such as @NonNull.

You need to make username as @NonNull

@NonNull private String username;

And you need to make them final too.