エンティティモデルの次のケースがあり、Hibernate 3.6 を使用しているとします。
Person
|__ Student
|__ SchoolBoy
|__ CollegeStudent
DB にあるテーブルはtpersonとtstudentです。私は 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>