国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Hibernate多對多關(guān)聯(lián)

2019-11-14 20:48:24
字體:
供稿:網(wǎng)友
Hibernate多對多關(guān)聯(lián)

多對多關(guān)聯(lián):

示例:Teacher和Student,一個Teacher可以教很多student,一個Student也可以被很多teacher教

 

多對多單向關(guān)聯(lián)

Teacher知道自己教了哪些學(xué)生,Student不知道教自己的有哪些老師

在Teacher中建(Set集合形式的)Student對象,并添加@ManyToMany注解

1.建Teacher實體類和Student實體類,添加Annotation注解,如下

@Entitypublic class Teacher {PRivate int id;private String name;private Set<Student> students = new HashSet<Student>();@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@ManyToMany//@JoinTable(name="t_s",//           joinColumns={@JoinColumn(name="t_id")},//           inverseJoinColumns={@JoinColumn(name="s_id")}//)public Set<Student> getStudents() {return students;}public void setStudents(Set<Student> students) {this.students = students;}}

 

@Entitypublic class Student {private int id;private String name;@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

2.在hibernate.cfg.xml中添加mapping語句

<mapping class="com.hibernate.model.Teacher"/><mapping class="com.hibernate.model.Student"/>

3.建Junit測試類

public class ORMappingTest {@Testpublic void test() {new SchemaExport(new Configuration().configure()).create(true, true);}}

程序至此結(jié)束,運(yùn)行程序,在數(shù)據(jù)庫中生成表teacher、表student以及中間表teacher_student(默認(rèn)名)。

中間表teacher_student中會自動生成屬性名為Teacher_id和students_id的兩個外鍵,

可用@JoinTable注解修改中間表的名字及其屬性名,如下:

@ManyToMany@JoinTable(name="t_s",           joinColumns={@JoinColumn(name="t_id")},    inverseJoinColumns={@JoinColumn(name="s_id")})public Set<Student> getStudents() {return students;}

這樣會在數(shù)據(jù)庫中生成名為t_s的中間表,表中有屬性名為t_id和s_id的兩個外鍵。

 

多對多雙向關(guān)聯(lián)

Teacher知道自己教了哪些學(xué)生,Student也知道教自己的有哪些老師

在Teacher中建(Set集合形式的)Student對象,在Student中建(Set集合形式的)Teacher對象,并添加@ManyToMany注解

1.建Teacher實體類和Student實體類,添加Annotation注解

Teacher類,同上

Student類,如下:

@Entitypublic class Student {private int id;private String name;private Set<Teacher> teachers = new HashSet<Teacher>();@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@ManyToMany(mappedBy="students")     //多對多關(guān)系public Set<Teacher> getTeachers() {return teachers;}public void setTeachers(Set<Teacher> teachers) {this.teachers = teachers;}}

 

2.在hibernate.cfg.xml中添加mapping語句----同上

3.建Junit測試類----同上

 

程序至此結(jié)束,運(yùn)行程序,在數(shù)據(jù)庫中生成表teacher、表student以及中間表teacher_student(默認(rèn)名)。

中間表teacher_student中會自動生成屬性名為Teacher_id和students_id的兩個外鍵,

可用@JoinTable注解修改中間表的名字及其屬性名,

這樣會在數(shù)據(jù)庫中生成名為t_s的中間表,表中有屬性名為t_id和s_id的兩個外鍵。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 江山市| 桂平市| 康马县| 万源市| 永宁县| 凤山县| 启东市| 浦东新区| 曲阳县| 阿勒泰市| 克东县| 谷城县| 若羌县| 临海市| 凉城县| 沿河| 荣昌县| 萍乡市| 化隆| 汉川市| 安宁市| 武宁县| 沁源县| 上栗县| 鄱阳县| 东乌珠穆沁旗| 青冈县| 砀山县| 建阳市| 建湖县| 辽阳市| 宜兰市| 黑河市| 新疆| 乐业县| 洛南县| 涿州市| 宿迁市| 上虞市| 马边| 石首市|