问一个Hibernate映射的问题
发布网友
发布时间:2023-07-16 17:54
我来回答
共3个回答
热心网友
时间:2024-11-19 17:35
先分析关系
学生 -- 老师 多对多的关系
老师 - 班级 - 多对多
学生 - 班级 - 多对一
我先写类中的关系
public class Student{
private Set<Teacher> teacher ; //一个学生接受多个老师教学的集合
private Classes classes; //一个学生属于一个班级
}
public class Teacher{
private Set<Student> student; //老师教多个学生
private Set<Classes> classes; //老师所教班级的集合
}
public class Classes{
private Set<Student> student; //班级有多个学生
private Set<Teacher> teacher; //一个班级的老师的集合
}
根据这个类写的配置文件如下:
学校配置文件student.hbm.xml
<class name="Student" table="student">
<set name="teacher" table="teacher_student_bridge" 多对多关系需要桥表
inverse="false" lazy="false">
<key column="student_id"></key> 在学生类中,桥表的key用student_id外键
<many-to-many class="Teacher" column="teacher_id">
</many-to-many>
</set>
<many-to-one name="classes" column="classes_id" unique="false"
lazy="false"> classes_id是学生表的外键
</many-to-one>
</class>
老师配置文件teacher.hbm.xml
<class name="Teacher" table="teacher">
<set name="classes" table="teacher_classes_bridge" 多对多关系需要桥表
inverse="false" lazy="false">
<key column="teacher_id"></key> 在老师类中,桥表的key用teacher_id外键
<many-to-many class="Classes" column="classes_id">
</many-to-many>
</set>
<set name="student" table="teacher_student_bridge" 多对多关系需要桥表
inverse="false" lazy="false">
<key column="teacher_id"></key> 在老师类中,桥表的key用teacher_id外键
<many-to-many class="Student" column="student_id">
</many-to-many>
</set>
</class>
班级配置文件classes.hbm.xml
<class name="Classes" table="classes">
<set name="teacher" table="teacher_classes_bridge" 多对多关系需要桥表
inverse="false" lazy="false">
<key column="classes_id"></key> 在班级类中,桥表的key用classes_id外键
<many-to-many class="Teacher" column="teacher_id">
</many-to-many>
</set>
<set name="student" table="student" inverse = "true">
<key column="classes_id"></key> 班级对学生 是一对多关系
<one-to-many class="Student"></one-to-many>
</set>
</class>
这就是3个关系的映射文件,还有其他属性就加在这些xml文件中
比如还有姓名等
就在<class ..>中加入
<property name="teacherName" type="java.lang.String">
<column name="teacher_name" length="30" not-null="true" />
</property>
</class>
建表的话应该是
student表 teacher表 classes表
student_id teacher_id classes_id
classes_id
=============================================
teacher_classes_bridge老师班级桥表
teacher_id
classes_id
teacher_student_bridge老师学生桥表
teacher_id
student_id
累啊
热心网友
时间:2024-11-19 17:36
老师与班级 学生与班级都是一对多的关系 老师与学生也是一对多的关系
<set>
<one-to-many >
</set>
热心网友
时间:2024-11-19 17:36
这要看你数据库里它们之间是什么关系 ?
如果不会手动编写配置文件可以使用myeclipse的自动生成呀 而且正确率还很高