我有三张桌子。学生可以注册多门课程。
学生 RollNumber Integer,StudentName String
课程 CourseID Integer,CourseName String
StudentCourses RollNumber Integer,CourseID Integer,AllotedRoom Integer
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 :(得分:0)
在您的学生课程中有多对一,您可以指定链接的课程。 那就是
<many-to-one name="Student"
column="studentid"
update="false" insert="false"/>
在Java studentcourse类中,您可以指定Student对象,并在查询中使用studentcourse.student.studentname
检索名称。
BTW StudentCourse通常是一个课程,因此您可能想要更改该名称。