您的位置:首页 > 其它

Hibernate Annotation 多对多 配置

2012-09-17 16:37 120 查看
一个老师对应多个学生,一个学生有多个老师

t_student表

列名

数据类型
PK
FK
约束
备注
Id
Int

PK
主键
name
Varchar(50)
姓名
t_teacher表

列名

数据类型
PK
FK
约束
备注
Id
Int

PK
主键
name
Varchar(50)
姓名
t_teacher_student表

列名

数据类型
PK
FK
约束
备注
Id
int

PK
主键
sid
int

学生id
tid
int

老师id
java实体类

package com.kaishengit.pojo;

import java.util.Set;

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

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Table(name="t_teacher")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class Teacher {
private int id;
private String name;
private Set<Student> studentSet;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
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;
}

@ManyToMany(mappedBy="teacherSet")//表t_teacher放弃维护,teacherSet是Student类里的属性名,一定要使一方放弃维护
public Set<Student> getStudentSet() {
return studentSet;
}
public void setStudentSet(Set<Student> studentSet) {
this.studentSet = studentSet;
}

}


package com.kaishengit.pojo;

import java.util.Set;

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

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Table(name="t_student")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class Student {
private int id;
private String name;
private Set<Teacher> teacherSet;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
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;
}

@ManyToMany
@JoinTable(name="t_teacher_student",joinColumns={@JoinColumn(name="sid")},inverseJoinColumns={@JoinColumn(name="tid")})
//注意:joinColumns是指自己表在关系表(t_teacher_student)中的外键,inverseJoinColumns 是对方表即t_teacher表在关系表中的外键
public Set<Teacher> getTeacherSet() {
return teacherSet;
}
public void setTeacherSet(Set<Teacher> teacherSet) {
this.teacherSet = teacherSet;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐