这个多对多,你就分成2个多对一:
student(id,name,...)对stu_tea(studentId,teacherId,xxx)多对一
teacher(id,name,...)对stu_tea(studentId,teacherId,xxx)多对一
就可以了
操作就直接对stu_tea(studentId,teacherId,xxx)操作
========================
补充:
1、多对多的本质就是2个多对一。
2、所谓的多对多就是用配置,自动产生按一定命名规范表名的中间表,实际上是都产生中间表的(可以建个空的库,在多对多配置后,跑一下,然后可以去数据库自己去看)。
3、分成2个多对一,只不过是我们自己定义了中间表的表名而已。
4、记得给分啊……
一对一
1.1 外键关联 把外键对应的字段加上唯一约束
1.2 主键关联 我的主键就是你的主键 采用的主键生产机制是foreign
一对多 *******级联与反转********
我们偏爱双向一对多 在一方使用级联与反转 注意这里的一方
如果不用反转 hibernate默认由一方维护关联关系的字段 做法是一个一个的对集合里面的数据进行插入,关联字段为空,之后发一条一条的uodate语句去更新关联字段
如果我们用反转 表明将我们的关联关系维护权交给另一方(多方)管理,由多方维护关联字段的话,不会产生update语句,带来了性能上的
提升
级联:当主对象做操作时候其关联的对象也做与主对象类似的操作,可以减少我们的代码,一般在一方使用,我们认为在多方设置级联没有什么意义
级联 cascade的取值:
用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade取值有:
none,all,save-update,delete,lock,refresh,evict,replicate,persist,merge,delete-orphan
级联时 给关联对象设置id时需要注意,hibernate会对关联的对象进行update,二 如果关联对象在数据库不存在的时候会报错
*******级联删除*******:
1 关联关系不是由你控制,级联删除会报外键约束错误
2 控制权交给你 ,如果当前对象是非持久化状态,则先解除关系,把关联字段设置为null,然后删除自己
3 当前对象是持久化状态,不管有没有控制权,都可以删除它自己以及它关联的对象
反转:是否将关联关系维护权交给另一方控制 inverse 在