Hibernate @OneToOne Mapping mit einer @Where Klausel
-
10-10-2019 - |
Frage
Wird diese Arbeit -
@OneToOne()
@JoinColumn(name = "id", referencedColumnName = "type_id")
@Where(clause = "type_name = OBJECTIVE")
public NoteEntity getObjectiveNote() {
return objectiveNote;
}
Das ist, was ich versuche zu tun -. Den Datensatz aus Tabelle note
der type_id
ist die id
des aktuellen Objekts zu erhalten und type_name
ist OBJECTIVE
Ich kann die obige Abbildung an der Arbeit. Was mache ich falsch hier?
Lösung
Das ist einfach nur nicht Arbeit, sorry :( Sie tun müssen, um es als eine zu vielen und lebt mit einer Sammlung mit einem einzelnen Elemente zu bekommen.
Wenn Sie es wirklich wollen, so arbeiten, können Sie die Fremdschlüssel sowohl ID durch das Speichern und die type_name in einem Join-Tabelle Trick Hibernate und zu sagen, dass beide Spalten die Fremdschlüssel bilden.
Andere Tipps
Eigentlich kann man dies erreichen, indem @OneToOne
ohne @Where
angibt, aber @Where
auf der referenzierte Entity-Klasse setzen. Getestet habe ich diese auf Hibernate 4.3.11.
Dies funktioniert, wenn Sie kümmern sich nicht um irgendwelche Entitätsobjekten, die Ihren @Where
nicht übereinstimmen.
Wenn Sie tun Sorge um andere Einheiten, können Sie wahrscheinlich eine Unterklasse Entität erstellen, setzen @Where
darauf und diese Unterklasse verbinden. Aber ich habe dieses Szenario nicht getestet.