Stellen Sie sich die folgenden zwei Einheiten vor. Element
ist eine einfache Klasse, die einige Daten enthält:
@Entity
public class Element {
private String data;
public String getData() { return data; }
public void setData(String data) { this.data = data; }
}
Nächste Klasse, genannt VersionedElement
, erweitert Element
und enthält verschiedene Versionen zusammen mit der aktuellen Version. Hier ist meine "Lösung":
@Entity
public class VersionedElement extends Element {
private Set<Element> versions;
private Element currentVersion;
@Override
public String getData() {
return getCurrentVersion().getData();
}
@Override
public void setData(String data) {
getCurrentVersion().setData(data);
}
@OneToMany
public Set<Element> getVersions() {
return versions;
}
public void setVersions(Set<Element> versions) {
this.versions = versions;
}
@ManyToOne
public Element getCurrentVersion() {
return currentVersion;
}
public void setCurrentVersion(Element currentVersion) {
this.currentVersion = currentVersion;
}
}
Und mir gefällt nicht, was ich geschrieben habe, irgendetwas stimmt da nicht, ein zu geradliniger Ansatz. Zunächst einmal, in der letzten Klasse currentVersion
ist nicht begrenzt durch und hat keine Beziehung zu versions
. Es sieht so aus, als ob dem Code einige Hilfsklassen, eine Abstraktionsebene, eine JPA-Annotationstechnik oder alles zusammen fehlen. Ich brauche eine elegante, der JPA-Handbuchlösung würdige Lösung für diesen einfachen Fall. Für Hinweise, Links oder Codeschnipsel wäre ich dankbar.