2012-03-07 2 views
0

を必要とし、stu_nameをstu_id、favourite_subject、私は列を持つテーブル(学生)はHibernateのORMマッピングアイデア

favourite_subjectは数学のように定義済みの値を持つことになりますsubject_id、英語など 値は数学であれば、subject_idがありますテーブル: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> 

すべての被験者は、自分のテーブル&自身の対応するエンティティクラスを持つことになります。

+0

一つがここに収まる結合されたサブクラスまたはサブクラス? – krishna

答えて

0

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> 
関連する問題