Hibernate如何在连接的子类中进行区分

Hibernate如何在连接的子类中进行区分,hibernate,Hibernate,假设我有实体模型的以下情况,并使用Hibernate 3.6: Person |__ Student |__ SchoolBoy |__ CollegeStudent 数据库中的表是tperson和tstudent。在使用hibernate映射文件时,我在Person实体定义中声明如下: <joined-subclass name="Student" table="tstudent"> <key column="

假设我有实体模型的以下情况,并使用Hibernate 3.6:

Person
    |__ Student
            |__ SchoolBoy
            |__ CollegeStudent
数据库中的表是tpersontstudent。在使用hibernate映射文件时,我在Person实体定义中声明如下:

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

作为一个与大学生相似的小学生,我想对这两个班级(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>

Hibernate文档说明:

Hibernate不支持在同一根
元素下混合
映射。通过组合
元素,可以在同一
元素下混合每个层次结构的表和每个子类的表策略

在您的情况下,您需要将discriminator列移动到
tperson
表中,并使用join元素向学生类添加额外的属性


...
...

您也可以在学生子类元素中为所有学生共有的属性添加一个联接

请共享完整的映射我稍后会在我有时间查找详细信息时跟进,但我通过在Person和Student之间交换合成的继承来解决这个问题——在本例中,作为一名学生仅仅是个人的一个角色。更新了我的映射文件的更多细节@mabi如果你有一个解决方案,如果你在我的代码中发布一些示例,我将不胜感激。我知道不可能混合类继承类型,但是,我没有注意到在不同级别混合鉴别器值的可能性。那绝对值得赏金。如果你能看看我正在处理的一个案子,我将不胜感激。