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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top