@ManyToMany认识
来源:互联网 发布:网络金融销售是诈骗吗? 编辑:程序博客网 时间:2024/05/17 04:21
转自:http://blog.csdn.net/gabriel80/article/details/4260923
@ManyToMany 注释:表示此类是多对多关系的一边,mappedBy 属性定义了此类为双向关系的维护端,注意:mappedBy 属性的值为此关系的另一端的属性名。
例如,在Student类中有如下方法:
被控方:
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "students")
public Set<Teacher> getTeachers() {
return teachers;
}
那么这里的“students”就是Teachers的一个属性,通常应该是这样的:
Set<Student> students;
另一端的getStudents方法如下所示:
主控方:
@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
@JoinTable(name = "Teacher_Student",
joinColumns = {@JoinColumn(name = "Teacher_ID", referencedColumnName = "teacherid")},
inverseJoinColumns = {@JoinColumn(name = "Student_ID", referencedColumnName ="studentid")})
public Set<Student> getStudents() {
return students;
}
@ManyToMany 注释表示Teacher 是多对多关系的一端。@JoinTable 描述了多对多关系的数据表关系。name 属性指定中间表名称,joinColumns 定义中间表与Teacher 表的外键关系。上面的代码中,中间表Teacher_Student的Teacher_ID 列是Teacher 表的主键列对应的外键列,inverseJoinColumns 属性定义了中间表与另外一端(Student)的外键关系。
可以通过上面的定义看到有三个表学生表--老师表--老师学生中间表
以上提到主控方和被控方。。本人不赞同这种写法:
理由是: 1.既然是多对多关系。。为什么还要分主动方和被动方?
2.为什么需要删除老师后才级联中间表。。。请注意:以上定义方法时,删除学生是无法级联删除中间表的。
正确的写法应该是两边都用主控方的写法:
只是joinColumns和inverseJoinColumns属性的地方互换就可以了
new:(个人观点,,欢迎大家一起来讨论此问题)
总结:
个人的定义:
@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
@JoinTable(name = "Teacher_Student",
joinColumns = {@JoinColumn(name = "Student_ID", referencedColumnName = "studentid")},
inverseJoinColumns = {@JoinColumn(name = "Teacher_ID", referencedColumnName ="teacherid")})
public Set<Teacher> getTeachers() {
return teachers;
}
@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
@JoinTable(name = "Teacher_Student",
joinColumns = {@JoinColumn(name = "Teacher_ID", referencedColumnName = "teacherid")},
inverseJoinColumns = {@JoinColumn(name = "Student_ID", referencedColumnName ="studentid")})
public Set<Student> getStudents() {
return students;
}
0 0
- @ManyToMany认识
- ManyToMany
- @ManyToMany
- manytomany
- 关系/对象映射 多对多关系(@ManyToMany 注释)【重新认识】
- 关系/对象映射 多对多关系(@ManyToMany 注释)【重新认识】
- 关系/对象映射 多对多关系(@ManyToMany 注释)【重新认识】
- 关系/对象映射 多对多关系(@ManyToMany 注释)【重新认识】
- ManytoMany[Hibernate]
- jpa manyTOMany
- @ManyToMany mappedby
- ManyToMany JPA
- ManyToMany注释
- Hibernate-----@ManyToMany
- @ManyToMany 映射
- 《Hibernate》-----ManyToMany
- Django - ManyToMany relationship problem
- 十一、BDB ManyToMany
- 算法:简单选择排序
- Android开发性能优化简介
- java依赖注入理解
- 关于Java中HashMap和HashSet
- 解析提高PHP执行效率的50个技巧
- @ManyToMany认识
- SQL SERVER 计算除去周末之后的时间差
- hdu 1754
- $apply(),$digest()用法
- Ubuntu下,清屏等终端常用命令
- 使用ffmpeg将yuv编码成h264时有大小限制,太小的数据源编码会失败。
- Add Two Numbers
- YII配置环境
- UVA1533 Moving Pegs(bfs+hash)