2016-04-06 9 views
0

Was ist der Unterschied zwischen inverse="true" und constrained="true".Hibernate Bidirektionale Assoziation

Werden nicht beide verwendet, um die Verbindung bidirektional zu machen? Fügen Sie auch nicht eine Fremdschlüsseleinschränkung hinzu, die den Primärschlüssel in den 2 Tabellen verknüpft?

Ich bin verwirrt. Bitte führen Sie mich.

Antwort

1

Constrained wird zum verzögerten Laden von Eins-zu-Eins-Beziehungen verwendet. Da NHibernate durch gemeinsam genutzte Primärschlüssel implementiert wird, weiß NHibernate nicht, ob in der anderen Tabelle ein Datensatz vor dem Abrufen vorhanden ist. Wenn Sie eingeschränkt sind, geben Sie NHibernate an, dass immer ein Datensatz erwartet wird, sodass ein Proxy erstellt werden kann. Siehe this blog post from Ayende Rahien.

Mit inverse, teilen Sie NHibernate mit, dass eine Eins-zu-viele-Beziehung bereits von vielen Seiten gespeichert wird, so dass die Sammlung nicht auf der einen Seite gespeichert werden muss. Ich habe versucht, es hier zu erklären: When to use inverse=false on NHibernate/Hibernate OneToMany relationships?