JPA双向多对多关联关系

主表实体类代码

@Entity
@Table(name = "TEACHER")
public class Teacher {
    private Integer id;
    private String teacherName;
    private Integer teacherAge;
    private List<ClassName> classNameList;

    @Id
    @GeneratedValue
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Column(name = "TEACHER_NAME")
    public String getTeacherName() {
        return teacherName;
    }

    public void setTeacherName(String teacherName) {
        this.teacherName = teacherName;
    }


    public Integer getTeacherAge() {
        return teacherAge;
    }

    public void setTeacherAge(Integer teacherAge) {
        this.teacherAge = teacherAge;
    }

    @JoinTable(name="TEACHER_CLASS",
            joinColumns= {@JoinColumn(name="TEACHER_ID",referencedColumnName="ID")},
            inverseJoinColumns= {@JoinColumn(name="CLASS_ID",referencedColumnName="ID")})
    @ManyToMany
    public List<ClassName> getClassNameList() {
        return classNameList;
    }

    public void setClassNameList(List<ClassName> classNameList) {
        this.classNameList = classNameList;
    }

}

从表实体类代码

@Entity
@Table(name="CLASSNAME")
public class ClassName {
private Integer id;
private String classNumber;
private List<Teacher> teacherList;

@Id
@GeneratedValue
public Integer getId() {
    return id;
}
public void setId(Integer id) {
    this.id = id;
}

@Column(name="CLASS_NUMBER")
public String getClassNumber() {
    return classNumber;
}
public void setClassNumber(String classNumber) {
    this.classNumber = classNumber;
}

@ManyToMany(mappedBy="classNameList")
public List<Teacher> getTeacherList() {
    return teacherList;
}
public void setTeacherList(List<Teacher> teacherList) {
    this.teacherList = teacherList;
}
}

从表维护外键表,通过@ManyToMany注解所在属性上标注@JoinTable注解来指要生成哪个外键中间表。

name="TEACHER_CLASS" -> 指定生成中间表的表名。
joinColumns= {@JoinColumn(name="TEACHER_ID",referencedColumnName="ID")} -> 指定中间表哪列关联当前类,并指定该列的列名和指向的主键属性名。
inverseJoinColumns= {@JoinColumn(name="CLASS_ID",referencedColumnName="ID")} -> 指定中间表那列关联另一个类,并指定该列的列名和指向的主键名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值