нужна идея отображения Hibernate ORM - PullRequest
0 голосов
/ 07 марта 2012

У меня есть таблица (студент) со столбцами stu_id, stu_name, favourite_subject, subject_id

favourite_subject будет иметь предопределенные значения, такие как математика, английский и т. Д. если значение равно maths, subject_id будет иметь таблицу: id maths_subject.

значение, основанное на значении favourite_subject, subject_id будет указывать на идентификатор соответствующего субъекта.

Как я могу реализовать в Hibernate ORM Framework.

    <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>

у всех предметов будут свои таблицы и соответствующие им классы сущностей.

1 Ответ

0 голосов
/ 09 марта 2012

при условии следующей структуры класса

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>
...