5

エンティティモデルの次のケースがあり、Hibernate 3.6 を使用しているとします。

Person
    |__ Student
            |__ SchoolBoy
            |__ CollegeStudent

DB にあるテーブルはtpersontstudentです。私は hibernate マッピング ファイルを使用しているので、以下のように Person エンティティ定義に宣言します。

<joined-subclass name="Student" table="tstudent">
    <key column="id_person" />
</joined-subclass>

CollegeStudent に似た SchoolBoyであるため、両方のクラスを保持しながら、同じテーブルを両方 (tstudent) に使用し、学生タイプの識別子列を持ちたいと考えています。私の問題は、結合サブクラスに入ると、Hibernate が識別子列を許可しないように見えることです。

そのための回避策はありますか?

アップデート

それが私が今持っているものです:

<class name="Person">
    <id name="Id" column="id" type="integer">
        <generator class="increment" />
    </id>
    <joined-subclass name="Student" table="tstudent">
        <key column="id_person" />
        <joined-subclass name="SchoolBoy" table="tschoolboy">
            <key column="id_person" />
        </joined-subclass>
        <joined-subclass name="CollegeStudent" table="tcollegestudent">
            <key column="id_person" />
        </joined-subclass>
    </joined-subclass>
</class>

それが、マッピングの結合部分で私がしたいことです:

<joined-subclass name="Student" table="tstudent">
    <key column="id_person" />
    <discriminator column="student_type" />
    <subclass name="SchoolBoy" discriminator-value="SCHOOL_BOY" />
    <subclass name="CollegeStudent" discriminator-value="COLLEGE_STUDENT" />
</joined-subclass>
4

1 に答える 1