2012-05-11 3 views
1

У меня есть три таблицы. Студент может зарегистрироваться для нескольких курсов.Как сделать индивидуальное сопоставление с составным ключом в спящем режиме

Student RollNumber Integer, StudentName Строка

курс CourseID Integer, CourseName Строка

StudentCourses RollNumber Integer, Integer 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 вы можете указать объект студента и получить имя с studentcourse.student.studentname в запросе. BTW StudentCourse - это обычно класс, поэтому вы можете изменить это имя.

Смежные вопросы