Ich habe versucht, Hibernate's inverse Attribut zu verstehen, und es scheint nur eines dieser Dinge zu sein, die konzeptionell schwierig ist.Wann sollte inverse = false für NHibernate/Hibernate OneToMany-Beziehungen verwendet werden?
Der Kern, die ich erhalte, ist, dass, wenn Sie eine übergeordnete Einheit (zB Eltern) haben, die eine Sammlung von Child-Objekte mit einem one-to-many Mapping hat, inverse Einstellung auf dem Mapping = true Hibernate sagt, dass ' Die andere Seite (das Kind) ist dafür verantwortlich, sich selbst zu aktualisieren, um die Fremdschlüsselreferenz in ihrer Tabelle beizubehalten.
Dies hat zwei Vorteile, wenn es darum geht, Children der Sammlung in Ihrem Code hinzuzufügen und dann das Parent (mit Kaskaden-All-Set) zu speichern: you save an unneccessary hit on the database (weil Hibernate ohne Inversersatz denkt, dass es zwei Stellen hat die FK Beziehung zu aktualisieren), und nach den offiziellen Dokumenten:
Wenn die Spalte einer Vereinigung deklariert wird NOT NULL, NHibernate verursachen kann Verletzungen Einschränkung, wenn es schafft oder aktualisiert die Vereinigung. Um dieses Problem zu verhindern, müssen Sie eine bidirektionale Verbindung mit dem vielwertigen Ende (der Satz oder Tasche) als inverse = "true" markiert verwenden.
Das scheint alles bisher Sinn zu machen. Was ich nicht verstehe, ist folgendes: Wann würden Sie NICHT inverse = true für eine Eins-zu-viele-Beziehung verwenden wollen?
Das hat nicht für mich funktioniert. Es führt das Update nie aus. Es fügt nur sie ein. – BradLaney