生活随笔
收集整理的這篇文章主要介紹了
Hibernate4多对多关系映射
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
示例:一個老師(Teacher)有多個學生(Student),一個學生有多個老師。
Java代碼 ?
public?class?Teacher?{????????private?Integer?id;??????private?String?name;????????private?Set<Student>?students?=?new?HashSet<Student>();??????????}????? ?
Java代碼 ?
public?class?Student?{????????private?Integer?id;??????private?String?name;????????????private?Set<Teacher>?teachers?=?new?HashSet<Teacher>();??????????}?? ?用XML映射
Xml代碼 ?
<hibernate-mapping?package="org.monday.hibernate4.domain">??????<class?name="Teacher"?table="tbl_teacher">??????????<id?name="id">??????????????<generator?class="identity"?/>??????????</id>??????????<property?name="name"?/>??????????<set?name="students"?table="tbl_student_teacher">??????????????<key?column="teacher_id"?/>??????????????<many-to-many?class="Student"?column="student_id"?/>??????????</set>??????</class>??</hibernate-mapping>?? ?
Xml代碼 ?
<hibernate-mapping?package="org.monday.hibernate4.domain">??????<class?name="Student"?table="tbl_student">??????????<id?name="id">??????????????<generator?class="identity"?/>??????????</id>??????????<property?name="name"?/>??????????<set?name="teachers"?table="tbl_student_teacher"?inverse="true">??????????????<key?column="student_id"?/>??????????????<many-to-many?class="Teacher"?column="teacher_id"?/>??????????</set>??????</class>??</hibernate-mapping>?? ?
?用@Annotation映射
Java代碼 ?
@Entity??@Table(name?=?"tbl_teacher")??public?class?Teacher?{????????@Id??????@GeneratedValue(strategy?=?GenerationType.IDENTITY)??????private?Integer?id;??????private?String?name;????????@ManyToMany??????@JoinTable(name?=?"tbl_student_teacher",?joinColumns?=?@JoinColumn(name?=?"teacher_id"),?inverseJoinColumns?=?@JoinColumn(name?=?"student_id"))??????private?Set<Student>?students?=?new?HashSet<Student>();??????????}?? ?
Java代碼 ?
@Entity??@Table(name?=?"tbl_student")??public?class?Student?{????????@Id??????@GeneratedValue(strategy?=?GenerationType.IDENTITY)??????private?Integer?id;??????private?String?name;????????@ManyToMany(mappedBy?=?"students")??????private?Set<Teacher>?teachers?=?new?HashSet<Teacher>();??????????}?? ?@ManyToMany中增加mappedBy屬性的實體將不再控制關聯關系?
?
測試代碼
Java代碼 ?
Student?s?=?new?Student();??s.setName("terry");????Teacher?t?=?new?Teacher();??t.setName("mary");????t.getStudents().add(s);??s.getTeachers().add(t);????session.save(t);??session.save(s);?? ?
?SQL schema
Sql代碼 ?
Hibernate:???????create?table?tbl_student?(??????????id?integer?not?null?auto_increment,??????????name?varchar(255),??????????primary?key?(id)??????)??Hibernate:???????create?table?tbl_student_teacher?(??????????teacher_id?integer?not?null,??????????student_id?integer?not?null,??????????primary?key?(teacher_id,?student_id)??????)??Hibernate:???????create?table?tbl_teacher?(??????????id?integer?not?null?auto_increment,??????????name?varchar(255),??????????primary?key?(id)??????)??Hibernate:???????alter?table?tbl_student_teacher???????????add?index?FK2BB635DB556D6E8?(teacher_id),???????????add?constraint?FK2BB635DB556D6E8???????????foreign?key?(teacher_id)???????????references?tbl_teacher?(id)??Hibernate:???????alter?table?tbl_student_teacher???????????add?index?FK2BB635DA4BB8C48?(student_id),???????????add?constraint?FK2BB635DA4BB8C48???????????foreign?key?(student_id)???????????references?tbl_student?(id)??Hibernate:???????insert???????into??????????tbl_teacher??????????(name)???????values??????????(?)??Hibernate:???????insert???????into??????????tbl_student??????????(name)???????values??????????(?)??Hibernate:???????insert???????into??????????tbl_student_teacher??????????(teacher_id,?student_id)???????values??????????(?,??)?
總結
以上是生活随笔為你收集整理的Hibernate4多对多关系映射的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。