Java 需要一个Hibernate ORM映射思想吗

Java 需要一个Hibernate ORM映射思想吗,java,hibernate,orm,mapping,Java,Hibernate,Orm,Mapping,我有一个tablestudent,列有stu_id、stu_name、favorite_subject、subject_id 最喜欢的科目将具有预定义的值,如数学、英语等。 如果值为数学,则subject_id将具有table:mathematics_subject's id 也就是说,根据Favorite_subject值,subject_id将指向相应的subject的id 如何在Hibernate ORM框架中实现 <hibernate-mapping package="co

我有一个tablestudent,列有stu_id、stu_name、favorite_subject、subject_id

最喜欢的科目将具有预定义的值,如数学、英语等。 如果值为数学,则subject_id将具有table:mathematics_subject's id

也就是说,根据Favorite_subject值,subject_id将指向相应的subject的id

如何在Hibernate ORM框架中实现

    <hibernate-mapping package="com.sample.project">
        <class name="StudentDTO" table="student">
            <meta attribute="class-description">class to hold student data</meta>
            <id name="id" type="long" column="stu_id">
                <generator class="increment"/>
            </id>
            <discriminator column="favourite_subject" type="string"/>
            <property name="studentName" column="stu_name" not-null="true"/>

            <!--??  here i don't know how to proceed. ??-->
            <subclass name="??????" discriminator-value="Maths">
                ????
            </subclass>
        </class>
    </hibernate-mapping>

所有科目都有自己的表和相应的实体类。

假设采用以下类结构

class Student
{
    private Subject favoriteSubject;
}

class MathSubject : Subject
{
}
class EnglishSubject : Subject
{
}
对应映射

<hibernate-mapping package="com.sample.project">
    <class name="Student" table="student">
        <meta attribute="class-description">class to hold student data</meta>
        <id name="id" type="long" column="stu_id">
            <generator class="increment"/>
        </id>
        <property name="studentName" column="stu_name" not-null="true"/>

        <any name="subject" id-type="Integer" meta-type="String" cascade="all">
          <meta-value value="math" class="MathSubject"/>
          <meta-value value="english" class="EnglishSubject"/>
          <column name="favourite_subject"/>
          <column name="subject_id"/>
        </any>
    </class>
</hibernate-mapping>

连接子类或子类哪个适合这里?