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 javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="_Student")
public class Student {
private int id;
private String name;
@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);
	}
測試結果:

20:50:18,856 DEBUG SchemaExport:377 - 
    create table _Student (
        id integer not null auto_increment,
        name varchar(255),
        primary key (id)
    )
20:50:18,862 DEBUG SchemaExport:377 - 
    create table _Teacher (
        id integer not null auto_increment,
        name varchar(255),
        primary key (id)
    )
20:50:18,866 DEBUG SchemaExport:377 - 
    create table t_s (
        teacher_id integer not null,
        student_id integer not null,
        primary key (teacher_id, student_id)
    )
20:50:18,872 DEBUG SchemaExport:377 - 
    alter table t_s 
        add index FK1BF6857018E8C (teacher_id), 
        add constraint FK1BF6857018E8C 
        foreign key (teacher_id) 
        references _Teacher (id)
20:50:18,881 DEBUG SchemaExport:377 - 
    alter table t_s 
        add index FK1BF68466643EC (student_id), 
        add constraint FK1BF68466643EC 
        foreign key (student_id) 
        references _Student (id)
20:50:18,963  INFO SchemaExport:268 - schema export complete
xml版本:

Teacher類和Student類同上

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>
    </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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章