【问题标题】:need an Hibernate ORM mapping idea需要一个 Hibernate ORM 映射思想
【发布时间】:2012-03-07 18:15:51
【问题描述】:

我有一张桌子(学生),里面有 stu_id、stu_name、favourite_subject、subject_id 列

favourite_subject 将具有预定义的值,例如数学、英语等。 如果值为 maths,subject_id 将有 table: maths_subject 的 id。

意思是,根据 favourite_subject 的值,subject_id 将指向对应的主题的 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>

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

【问题讨论】:

  • 加入子类或子类哪一个适合这里?

标签: java hibernate orm mapping


【解决方案1】:

假设以下类结构

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>

【讨论】:

    猜你喜欢
    • 2012-08-17
    • 2010-09-23
    • 2011-01-06
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 2010-12-14
    • 2019-10-07
    • 2010-12-04
    相关资源
    最近更新 更多