2016-03-20 13 views
0

Ich habe 2 Klassen: Benutzer und Firma.Wie Null auf Fremdschlüssel Spalte in OneToMany-Beziehung, Hibernate

Ich brauche, wenn ich Firma löschen, um den Fremdschlüssel company_id als Null in User-Tabelle zu setzen. Wie könnte ich das tun?

+0

user.setCompany (null); Company.getEmployees(). Remove (emp); ? –

+0

Ich denke, das könnte CascadeType oder etw. Ich weiß nicht wie. –

+0

es hat "etwas mit CascadeType zu tun", wenn Sie die Löschung kaskadieren möchten, aber dann bedenken Sie, dass Ihre Frage nicht erwähnt, dies zu tun, dann nicht –

Antwort

0

Normalerweise wird die Beziehung, die Sie beschreiben, mit einem constraint für den Fremdschlüssel erstellt, der auf die User Entität verweist. Dies ist so, dass Sie es nicht auf null einstellen können. Wenn Sie es auf null setzen, wird daraus eine orphaned Zeile, die für eine fehlerhafte Datenbank sorgt.

Wenn die beiden Entitäten andererseits getrennt von ihren Joins beibehalten werden müssen, ist Ihre Beziehung nicht so, wie Sie sie beschreiben.

Es scheint, dass in diesem Fall Firmen und Benutzer (Personen?) Beide existieren müssen, ohne notwendigerweise verbunden zu werden. Ich würde eine neue Entität vorschlagen, so etwas wie Employment. Es würde effektiv als join table in dem Sinne fungieren, dass es sowohl Company als auch User IDs hat, aber es könnte auch mehr Informationen wie startdate, enddate, und current employer haben.

Verwandte Themen