2012-05-11 83 views
1

我有三個表。學生可以註冊多門課程。如何做一對一的複合關係映射休眠

學生 RollNumber整數,字符串StudentName

CourseID整數,字符串CourseName

StudentCourses RollNumber整數,CourseID整數,AllotedRoom整數

Student.hbm .xml

<hibernate-mapping> 
    <class name="myPackage.Student" table="STUDENT"> 
     <id name="ROLLNUMBER" type="integer"> 
      <column name="ROLLNUMBER" /> 
     </id> 

     <property name="STUDENTNAME" type="string"> 
      <column name="STUDENTNAME"/> 
     </property> 
    </class> 
</hibernate-mapping> 

Course.hbm.xml

<hibernate-mapping> 
    <class name="myPackage.Course" table="COURSE"> 
     <id name="COURSEID" type="integer"> 
      <column name="COURSEID" /> 
     </id> 

     <property name="COURSENAME" type="string"> 
      <column name="COURSENAME"/> 
     </property> 
    </class> 
</hibernate-mapping> 

StudentCourses.hbm.xml

<hibernate-mapping> 
    <class name="myPackage.StudentCourses" table="STUDENTCOURSES"> 
     <composite-id name="STUDENTCOURSES_pk" class="myPackage.STUDENTCOURSES_PK"> 
      <key-property name="STUDENTID" column="STUDENTID"/> 
      <key-property name="COURSEID" column="COURSEID"/> 
     </composite-id> 

     <property name="ALLOTEDROOM" type="integer"> 
      <column name="ALLOTEDROOM"/> 
     </property> 
    </class> 
</hibernate-mapping> 

對於在StudentCourses表中選擇的任何記錄,我想學生姓名以及 課程名稱。我的地圖文件應該如何看起來像這樣?

回答

0

您的學生課程中可以指定多對一的課程。 因此,這將是

<many-to-one name="Student" 
       column="studentid" 
       update="false" insert="false"/> 

在你的Java類studentcourse可以指定Student對象,並與您的查詢檢索studentcourse.student.studentname的名稱。 順便說一下,學生課程通常是一個班級,所以你可能想改變這個名字。