Ich schreibe gerade einen chaotischen Code um, der eine Datenbank verwaltet, und habe gesehen, dass der ursprüngliche Programmierer eine Klasse erstellt hat, die der Datenbank wie folgt zugeordnet ist:
(Ich habe unnötigen Code entfernt, der in dieser Frage keinen Zweck hat)
@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;
}
}
Ich bin noch ein Anfänger in Hibernate und der Verwendung von Lombok, aber würde dies nicht das Gleiche tun und würde Lombok nicht automatisch den benötigten Konstruktor für Sie erstellen?
@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());
}
Außerdem sagt der ursprüngliche Programmierer dieses Codes, dass er zulässt, dass der Header "null" ist, aber er hat ausdrücklich einen Konstruktor erstellt, der einen Wert für den Header benötigt. Übersehe ich etwas oder ist das ein bisschen widersprüchlich?