1

我有三张桌子。一个学生可以注册多个课程。

学生 RollNumber 整数,StudentName 字符串

课程 CourseID 整数,课程名称字符串

StudentCourses RollNumber 整数、CourseID 整数、AllotedRoom 整数

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

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

学生课程.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 表中选择的任何记录,我想获取学生姓名和课程名称。我的映射文件应该如何?

4

1 回答 1

0

在您的学生课程中使用多对一,您可以指定链接的课程。所以那将是

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

在 Java studentcourse 类中,您可以指定 Student 对象并studentcourse.student.studentname在查询中检索名称。BTW StudentCourse 通常是一个类,因此您可能想要更改该名称。

于 2012-05-12T15:18:48.623 回答