0

ここで私の仕事の解決策を見つけました:mix-joined-and-single-table-inheritance。質問には、2 つの継承戦略が混在している例が含まれています。単一のテーブルと結合されています。しかし、この注釈マッピングを XML マッピングに変換することは可能ですか?

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "animals")
public abstract class Animal { ...

@MappedSuperclass
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type")
public abstract class Mammal extends Animal { ...

@Entity
@Table(name = "mammals")
@PrimaryKeyJoinColumn(name = "mammal_id")
@DiscriminatorValue(value = "dog")
public class Dog extends Mammal { ...

@Entity
@Table(name = "mammals")
@PrimaryKeyJoinColumn(name = "mammal_id")
@DiscriminatorValue(value = "cat")
public class Cat extends Mammal { ...
4

1 に答える 1

1

申し訳ありませんが、昨日、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 |
|タイプ |
+------------------------------------+

これが役立つことを願っています。ところで、解決策があるので、この問題を解決するために注釈を使用しない理由は何なのか、まだ疑問に思っています:)。

于 2012-11-06T21:22:38.027 に答える