问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

问一个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的自动生成呀 而且正确率还很高
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 hibernate通过什么映射 少年派2摩天轮道歉是哪一集 从一楼走到4楼心脏跳动加快正常吗可以立即坐下休息吗 绣眉多久掉痂?绣眉后注意什么? 为什么chuck70比1970s贵 70s和1970s是一个意思吗 单机游戏玩多是浪费时间? 玩游戏浪费时间么? 伺服压力机最大开口高度和闭合高度分别为多少? 开式可倾63冲床最大封闭高度 压力机的闭合高度是指模具工作 压力机为什么有最大闭合高度和最小闭合高度如题,最大 猜一猜:夏季美食“毛豆”其实是哪种豆子的小时候? 巫师3年度版和原版有区别吗 滕州万达金牌修脚到哪里去了到哪里去了告诉我电话号码吗到哪去了电 ... 滕州万达有muji吗 滕州万达游戏厅在几楼 求解“月亮高挂在明空,月影倒照尘水中乌云闭月月不见,水中月影去何从... 某人花了多少钱买什么?(pay for)(spend) 某物花了默认多少钱(cost... 乌云闭月风飞沙,金戈铁马血染花指什么动物 比特币年底突破2万美元大关可能性极大? 三好四康分别是什么 藤王阁香烟多少钱一包? 在内蒙4s店买的哈弗大狗在衡水店第一次保养需要费用吗? 长城哈弗h6是不是全国免费保养 喜欢韩国欧巴的亲故在哪里 … 有吗 行星饭 ...那是不是合约过了他们就可以?我那个亲故还在担心她欧巴 EXO欧巴们现在的经纪人还是赵女神吗??! 在高速公路加速车道加速后,发现主车道车多,无法汇入车流,怎么办? 在高速公路加速车道加速后发现行车道车辆密集,没有汇入车流的条件,怎... 汽车在高速公路坏了 无法驶入应急车道怎么办 驾驶机动车从加速车道汇入行车道拥堵难行该怎么办 男友还是很爱他的前任女友,该怎么办? 我发现我男朋友却一直还爱他前任女友 ...偶尔会出现肚子疼想上厕所觉得恶心想吐,浑身出冷汗然后晕倒,是怎 ... 经期痛经症状:想吐,手脚冰凉,下腹痛,全身没力 黄体破裂的临床表现和特点有什么 往届初中生可以上公立职高吗? 往届生报职高好报吗 公立职高收往届生吗