首页 > 代码库 > Hibernate!!多对多(单向|双向)关联映射
Hibernate!!多对多(单向|双向)关联映射
多对多——单向关联映射
1 package com.hb.model; 2 3 import java.util.HashSet; 4 import java.util.Set; 5 6 import javax.persistence.Entity; 7 import javax.persistence.GeneratedValue; 8 import javax.persistence.Id; 9 import javax.persistence.ManyToMany;10 import javax.persistence.Table;11 12 @Entity13 @Table(name="t_teacher")14 public class Teacher {15 private int tid ;16 private String tname;17 private Set<Student> students = new HashSet<Student>();18 19 @Id20 @GeneratedValue21 public int getTid() {22 return tid;23 }24 public void setTid(int tid) {25 this.tid = tid;26 }27 public String getTname() {28 return tname;29 }30 public void setTname(String tname) {31 this.tname = tname;32 }33 @ManyToMany34 public Set<Student> getStudents() {35 return students;36 }37 public void setStudents(Set<Student> students) {38 this.students = students;39 }40 41 42 43 }
package com.hb.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="t_student")public class Student { private int sid; private String sname; @Id @GeneratedValue public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } }
生成的表如下:
这样生成的中间表的名称是自动生成的,也可以通过加入一些属性改变表的名称
只需要在Teacher类里面添加一些属性,修改后的代码如下:
1 @Entity 2 @Table(name="t_teacher") 3 public class Teacher { 4 private int tid ; 5 private String tname; 6 private Set<Student> students = new HashSet<Student>(); 7 8 @Id 9 @GeneratedValue10 public int getTid() {11 return tid;12 }13 public void setTid(int tid) {14 this.tid = tid;15 }16 public String getTname() {17 return tname;18 }19 public void setTname(String tname) {20 this.tname = tname;21 }22 @ManyToMany23 @JoinTable(name="t_s", //表名24 joinColumns={ @JoinColumn(name="teacher_id")}, // ???25 inverseJoinColumns={@JoinColumn(name="student_id")} // 对方那张表的对应的外键的id 26 )27 public Set<Student> getStudents() {28 return students;29 }30 public void setStudents(Set<Student> students) {31 this.students = students;32 }33 }
多对多单向关联在xml文件中的配置
1 <hibernate-mapping> 2 <class name="com.hb.model.Teacher"> 3 <id name="tid"> 4 <generator class="native"></generator> 5 </id> 6 7 <property name="tname"></property> 8 <set name="students" table="t_s"> 9 <key column="teacher_id"></key>10 <many-to-many class="com.hb.model.Student" column="student_id"/>11 </set>12 </class>13 14 </hibernate-mapping>
多对多——双向关联映射
- 很少用到
- 双向总会用到mappedBy
Hibernate!!多对多(单向|双向)关联映射
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。