申し訳ありませんが、昨日、1 レベルの継承から概念化されたコードの抜粋を投稿しました。発生した問題の原因は
<discriminator column="type" type="string"/>
<subclass> の下に置くことはできず、<join-subclass> をネストすることはできません。必要な機能を実現するために、今日も同様のコードを実行しようとしています。<subclass> の下に <join> を置いて <joint-subclass> をシミュレートしようとしましたが、<discriminator> はこの方法では機能しません。
したがって、私が思いつく唯一のことは、動物と哺乳類を 1 対 1 で関連付けることです。これが私が試したコードです。概念がわかりにくいかもしれません。
<hibernate-mapping>
<class name="bean.Animal" table="animal">
<id name="id" type="java.lang.Integer">
<column name="id" length="50" scale="0" />
</id>
<many-to-one name="mammal"
column="mammal_id"
not-null="true"/>
</class>
<class name="bean.Mammal" table="mammal">
<id name="mammal_id" type="java.lang.Integer">
<column name="mammal_id" length="50" scale="0" />
</id>
<discriminator column="type" type="string"/>
<subclass name="bean.Dog" extends="bean.Mammal" discriminator-value="dog">
</subclass>
<subclass name="bean.Cat" extends="bean.Mammal" discriminator-value="cat">
</subclass>
</class>
結果表は次のとおりです。
+------------------------------------+
|テーブル |
+------------------------------------+
|動物 |
|哺乳類 |
+------------------------------------+
そして、それらのテーブルのスキーマは
+------------------------------------+
|動物 |
+------------------------------------+
|ID |
|哺乳動物ID |
+------------------------------------+
+------------------------------------+
|哺乳類 |
+------------------------------------+
|哺乳動物ID |
|タイプ |
+------------------------------------+
これが役立つことを願っています。ところで、解決策があるので、この問題を解決するために注釈を使用しない理由は何なのか、まだ疑問に思っています:)。