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

本文详细介绍了多对多双向外键的概念及其在教师与学生之间的应用方式。通过具体的Java实体类示例,展示了如何在Hibernate框架下实现多对多的关系映射,并解释了mappedBy属性的作用。

多对多双向外键

双方持有对方的集合对象

其中一方设置:

//教师类

@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; } }

测试结果差不多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值