Ich habe 2 Entitäten Stecker und Sockel, die Eins-zu-Eins-Zuordnung haben.Wie man Beziehungen modelliert, die 1: 1-Beziehungen mit Hibernate ändern
Jetzt hat der Stecker eine Fremdschlüsselbeziehung zu der Buchse, an die er angeschlossen ist.
Hibernate generiert eine eindeutige Einschränkung für den Fremdschlüssel, um eine Eins-zu-eins-Beteiligung zu gewährleisten.
Ich habe 10 Stecker, die in 10 Buchsen eingesteckt sind.
Nach einiger Zeit kommt ein Update, das das System über die Änderung der Anordnung informiert.
Das Szenario ist plugA, die in SocketA gesteckt wurde, ist jetzt in SocketB eingesteckt und plugB, das in SocketB gesteckt wurde, ist jetzt in socketA eingesteckt.
Beim Ausführen des Updates versucht Hibernate zuerst, die Fremdschlüsselspalte von plugA auf SocketB zu aktualisieren, was zu einer Verletzung der eindeutigen Integritätsbedingung führt. Dies liegt daran, dass die Beziehung zwischen PlugB und SocketB noch nicht geändert wurde.
Was ist der beste Weg, um die Beziehung zu modellieren?
Beachten Sie, dass das gesamte Update als einzelne Transaktion ausgeführt werden muss.
Dies ist der Code
Innen Buchse
@OneToOne(mappedBy="socket")
public Plug getPlug()
{
return plug;
}
Innen Stecker @OneToOne (optional = false) öffentlichen Sockel getSocket() { return-Buchse; }
Warum machst du es nicht viele zu eins? viele Stecker für eine Steckdose – kommradHomer