Validierungen ergänzen

Die Entity Classes Lehrveranstaltung und Klausur assoziieren mittels entsprechender Attribute (mDozent in Lehrveranstaltung und mLehrveranstaltung in Klausur) andere Klassen. Die Entity Classes Modul und Dozent hingegen werden assoziiert. Sie selbst sind jedoch von keinen andere Klassen abhängig.

Damit in den Webseiten, die im nachfolgenden CRUD-Prototyping entstehen, diese Abhängigkeiten korrekt aufgelöst und die Assoziationen zwischen den Klassen ordentlich validiert werden können, ist es erforderlich, in allen Entity Classes die Methode equals() zu überschreiben. Tut man es nicht, kommt es zum nachfolgend abgebildeten oder einem ähnlichen Validierungsfehler.

Die Methode equals() überschreiben

Die Basismethode equals(), die in jeder Klasse vorhanden ist, wird mit folgendem Code überschrieben:

@Override
public boolean equals(Object object) {
    if(!(object instanceof Klausur)) {
        return false;
    }
    Klausur other = (Klausur) object;
    if((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
        return false;
    }
    return true;
}

Der Klassenname Klausur des obigen Beispielcodes ist natürlich in jeder Entity Class durch ihren eigenen Namen zu ersetzen.

Die Methode hashCode() überschreiben

Sobald man die erste equals()-Methode überschreibt, macht NetBeans darauf aufmerksam, dass es offensichtlich erforderlich ist, zusätzlich die Methode hashCode() zu überschreiben:

@Override
public int hashCode() {
    int hash = 0;
    hash += (id != null ? id.hashCode() : 0);
    return hash;
}

Der abgebildete Code wird in jede Entity Class übernommen.

Die Methode toString() überschreiben

Und zuguterletzt sollte noch die Methode toString() überschrieben werden, damit in den Eingabefeldern der durch das CRUD-Prototyping entstehenden Webseiten die Verweise auf andere Klassen "richtig schick" aussehen:

@Override
public String toString() {
    return this.getMLehrveranstaltung().toString() + "/" + this.getTermin().toString();
}

Welchen Rückgabewert die Methode tatsächlich zurückliefern soll, bleibt Ihrer Fantasie überlassen. Im abgebildeten Beispiel ergänzt sie das Ergebnis, das die Klasse Lehrveranstaltung in ihrer (ebenfalls durch Sie überschriebenen) Methode toString() zurückliefert, zusätzlich durch den Termin der Klausur.