假设我有以下实体模型案例并使用 Hibernate 3.6:
Person
|__ Student
|__ SchoolBoy
|__ CollegeStudent
我的数据库中的表是tperson和tstudent。当我使用休眠映射文件时,我在我的 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>