ディーラーと売り手の間に 1 対 1 の関係がありますが、これはプロキシを使用するのが面倒です。外部キーが定義されている側 (販売者、販売者を参照) では、これは正常に機能します。しかし、反対側からはうまくいきません - 売り手は常に熱心に積み込まれています. 「遅延読み込みに関するいくつかの説明」constrained="true"
で説明されているように設定しましたが、役に立ちませんでした。
使用されるマッピングは次のとおりです。
<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>
両方のクラスが 1 つのテーブルに存在することは問題ですか? 厳密に言えば、関係はデータベースに制約されていません (このモデルを使用することはできません) が、ドメイン モデルには常に両方のエンティティが必要であり、アプリケーションはこれを保証します。