您的位置:首页 > 其它

08-hibernate注解-多对多双向外键关联

2017-11-14 00:20 417 查看

多对多双向外键

双方持有对方的集合对象

其中一方设置:

//教师类

@ManyToMany(mappedBy="teachers") //mappedby表示教师交给学生来控制

另一方:

//学生类

@ManyToMany
@JoinTable(
name="teachars_students",                    //中间表的名字
joinColumns= {@JoinColumn(name="sid")},        //外键的字段
inverseJoinColumns= {@JoinColumn(name="tid")})    //反转控制字段的名字


相对于刚刚的多对多单向外键,多对多双向外键,只需要在教师类修改就行了。

教师类:

因为多对多,所以教师类中也需要有学生类的集合。

然后把教师交给学生来控制,由学生做主控方。

package mtm_bfk;

import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;

import org.hibernate.annotations.GenericGenerator;

//教室实体类
@Entity
public class Teachers {

@Id
@GeneratedValue(generator="tid")
@GenericGenerator(name="tid",strategy="assigned")
@Column(length=4)
private String tid;//教师的编号
private String tname;//姓名

@ManyToMany(mappedBy="teachers")//把教师交给学生控制
private Set<Students> stus;//教师持有学生的集合

public Teachers()
{

}
public Teachers(String tid, String tname) {
//super();
this.tid = tid;
this.tname = tname;
}

public Set<Students> getStus() {
return stus;
}

public void setStus(Set<Students> stus) {
this.stus = stus;
}

public String getTid() {
return tid;
}

public void setTid(String tid) {
this.tid = tid;
}

public String getTname() {
return tname;
}

public void setTname(String tname) {
this.tname = tname;
}

}


测试结果差不多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: