ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> MySql >> hibernate(九)多对多关联

hibernate(九)多对多关联(1/2)

来源:网络整理     时间:2015-12-28     关键词:

本篇文章主要介绍了"hibernate(九)多对多关联",主要涉及到方面的内容,对于MySql感兴趣的同学可以参考一下: 一、多对多单向关联假设一个老师教多个学生,一个学生被多个老师教,这就是典型的多对多关系配置方式是在Teacher类的getStudents()方法上添加注解@M...

一、多对多单向关联

假设一个老师教多个学生,一个学生被多个老师教,这就是典型的多对多关系

配置方式是在Teacher类的getStudents()方法上添加注解@ManyToMany

@JoinTable(name="t_s" ,

joinColumns = { @JoinColumn(name="teacher_id")},

inverseJoinColumns = { @JoinColumn(name="student_id")}

)

Teacher类:

package cn.orlion.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.JoinTable;
import javax.persistence.ManyToMany;
@Entity
publicclass Teacher {

    privateint id;

    private String name;

    private Set students = new HashSet();
    @Id
    @GeneratedValue
    publicint getId() {
        return id;
    }

    publicvoid setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    publicvoid setName(String name) {
        this.name = name;
    }
    @ManyToMany
    @JoinTable(name="t_s" , // t_s是生成的中间表的表名        joinColumns = { @JoinColumn(name="teacher_id")},// teacher_id是生成中间表中参考自Teacher的外键
        inverseJoinColumns = { @JoinColumn(name="student_id")}// inverseJoinColumns配置的是反转的对象(即Student)的idstudent_id是中间表中参考自Student的外键
        )
    public Set getStudents() {
        return students;
    }

    publicvoid setStudents(Set students) {
        this.students = students;
    }

}

Student类:

package cn.orlion.hibernate.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
publicclass Student {

    privateint id;

    private String name;
    @Id
    @GeneratedValue
    publicint getId() {
        return id;
    }

    publicvoid setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    publicvoid setName(String name) {
        this.name = name;
    }
}

生成的sql语句:

相关图片

相关文章