Ich habe eine Eins-zu-Eins-Beziehung zwischen einem Händler und einem Verkäufer, die mit einem Proxy faul sein sollte. Für die Seite, auf der der Fremdschlüssel definiert ist (der Verkäufer referenziert den Händler), funktioniert das gut. Aber von der anderen Seite funktioniert es nicht - der Verkäufer wird immer eifrig geladen. Ich habe constrained="true"
wie in "Some explanations on lazy loading" beschrieben, aber das hat nicht geholfen.Lazy One-to-One mit Proxy funktioniert nicht
Es folgt das verwendete Mapping:
<class name="Role" table="PER_PERSROLE" abstract="true">
<id column="OID" type="long">
<generator class="native" />
</id>
<discriminator column="SUBTYPE" type="string" />
</class>
<subclass name="Dealer" extends="Role" discriminator-value="DEAL">
<property name="gpNr" column="GP_NR" type="string" />
<one-to-one name="seller" property-ref="dealer" lazy="proxy" constrained="true"
outer-join="false" />
</subclass>
<subclass name="Seller" extends="Role" discriminator-value="SELL">
<many-to-one name="dealer" column="SELLER_DEALEROID" lazy="proxy"
outer-join="false" />
</subclass>
Ist es ein Problem, dass beide Klassen in einer Tabelle befinden? Ich sehe, dass die Beziehung streng genommen nicht auf die Datenbank beschränkt ist (sie kann dieses Modell nicht verwenden), aber das Domänenmodell benötigt immer beide Entitäten und die Anwendung stellt dies sicher.
Sie wirklich, wirklich wollen nicht die Hibernate 1-1 Zuordnung zu verwenden : http://www.sworddance.com/blog/2006/10/03/hibernate-nastiness-use-the-one-to-one-mapping/ – Pat