Constructeur explicite utilisant Lombok?

Je suis à la réécriture de certains désordre code qui gère une base de données, et vu qu'à l'origine le programmeur a créé une classe mappé à la base de données comme suit:

(J'ai enlevé code inutile qui n'a pas de but dans cette question)

@Entity
@Data
@EqualsAndHashCode(callSuper = false, of = { "accessionCode", "header", "date" })
@SuppressWarnings("PMD.UnusedPrivateField")
public class PDBEntry implements Serializable {
    @Id
    @NaturalId
    @NotEmpty
    @Length(max = 4)
    private String accessionCode;

    @NaturalId
    @NotEmpty
    private Date date;

    @NaturalId
    //We allow for the header to be 'null'
    private String header;

    private Boolean isValidDssp;

    @Temporal(TemporalType.TIMESTAMP)
    private Date lastUpdated = new Date(System.currentTimeMillis());

    protected PDBEntry(){}

    public PDBEntry(String accessionCode, String header, Date date){
        this.accessionCode = accessionCode;
        this.header = header;
        this.date = date;
    }
}

Je suis encore un débutant en veille prolongée et à l'aide de Lombok, mais ne serait-ce pas la même chose et ne serait pas Lombok créer automatiquement le besoin constructeur pour vous?

@Entity
@Data
@SuppressWarnings("PMD.UnusedPrivateField")
public class PDBEntry implements Serializable {
    @Id
    @NaturalId
    @NotEmpty
    @NonNull
    @Length(max = 4)
    private String accessionCode;

    @NaturalId
    @NotEmpty
    @NonNull
    private Date date;

    @NaturalId
    //We allow for the header to be 'null'
    private String header;

    private Boolean isValidDssp;

    @Temporal(TemporalType.TIMESTAMP)
    private Date lastUpdated = new Date(System.currentTimeMillis());
}

Aussi, le programmeur original de ce code, dit-il permet l'en-tête à 'null', mais il les a créés explicitement un constructeur qui a besoin d'une valeur d'en-tête. Ai-je raté quelque chose ou est-ce un peu contradictoire?

source d'informationauteur FinalArt2005