hibernate之多對多雙向關聯

Annotation版本:

Teacher類:

package com.hibernate.model;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name="_Teacher")
public class Teacher {
private int id;
private String name;
private Set<Student> student = new HashSet<Student>();
@Id
@GeneratedValue
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getName() {
	return name;
}
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="teacher_id")},
inverseJoinColumns={@JoinColumn(name="student_id")})
public Set<Student> getStudent() {
	return student;
}
public void setStudent(Set<Student> student) {
	this.student = student;
}
public void setName(String name) {
	this.name = name;
}

}
Student類:

package com.hibernate.model;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@Entity
@Table(name="_Student")
public class Student {
private int id;
private String name;
private Set<Teacher> teacher = new HashSet<Teacher>();
@ManyToMany(mappedBy="student")
public Set<Teacher> getTeacher() {
	return teacher;
}
public void setTeacher(Set<Teacher> teacher) {
	this.teacher = teacher;
}
@Id
@GeneratedValue
public 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;
}

}
測試用例:

	@Test
	public void testSchemaExport(){
		new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
	}
	
測試結果:

21:19:02,538 DEBUG SchemaExport:377 - 
    create table _Student (
        id integer not null auto_increment,
        name varchar(255),
        primary key (id)
    )
21:19:02,549 DEBUG SchemaExport:377 - 
    create table _Teacher (
        id integer not null auto_increment,
        name varchar(255),
        primary key (id)
    )
21:19:02,555 DEBUG SchemaExport:377 - 
    create table t_s (
        teacher_id integer not null,
        student_id integer not null,
        primary key (teacher_id, student_id)
    )
21:19:02,577 DEBUG SchemaExport:377 - 
    alter table t_s 
        add index FK1BF6857018E8C (teacher_id), 
        add constraint FK1BF6857018E8C 
        foreign key (teacher_id) 
        references _Teacher (id)
21:19:02,587 DEBUG SchemaExport:377 - 
    alter table t_s 
        add index FK1BF68466643EC (student_id), 
        add constraint FK1BF68466643EC 
        foreign key (student_id) 
        references _Student (id)
21:19:02,625  INFO SchemaExport:268 - schema export complete
xml版本:

Student.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.hibernate.model">

    <class name="Student" table="_Student">
    <id name="id">
    <generator class="native"/>
    </id>
    <property name="name"></property>
     <set name="teacher" table="t_s">
    <key column="student_id"></key>
    <many-to-many class="com.hibernate.model.Teacher" column="teacher_id"/>
    </set>
    </class>
</hibernate-mapping>
Teacher.hbm.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.hibernate.model">
    <class name="Teacher" table="_Teacher">
    <id name="id">
    <generator class="native"/>
    </id>
    <property name="name"></property>
    <set name="student" table="t_s">
    <key column="teacher_id"></key>
    <many-to-many class="com.hibernate.model.Student" column="student_id"/>
    </set>
    </class>
</hibernate-mapping>
尊重版權,轉載請註明本文鏈接

                                       歡迎關注行者摩羅微信公衆號(xingzhemoluo),共同交流編程經驗,掃描下方二維碼即可;

                                                                 







發佈了41 篇原創文章 · 獲贊 14 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章