举例:老师和学生
teacher实体
package cn.hibernate.annotationmapping;import org.hibernate.annotations.GenericGenerator;import javax.persistence.*;import java.util.HashSet;import java.util.Set;/** * Created by 17921 on 2017/12/31. */@Entity//将该类声明为一个实体@Table(name = "Teacher")//指定表的名称@GenericGenerator(name = "teid",strategy = "native")//创建主键生成策略public class Teacher { @Id//指定为表的ID @GeneratedValue(generator = "teid")//指定主键生成策略 @Column(name = "tid")//对应数据表的类名 private Integer tid; @Column(name = "tname") private String tname; @ManyToMany//多对多 //中间表 中间表的名称 本实体对应中间表的列 另一个实体对应中间表的列 @JoinTable(name = "RStuTe",joinColumns={@JoinColumn(name = "tid")},inverseJoinColumns = {@JoinColumn(name = "sid")}) private Setstudents=new HashSet (); //省略getset方法}
Student实体
package cn.hibernate.annotationmapping;import org.hibernate.annotations.*;import org.hibernate.annotations.CascadeType;import javax.naming.Name;import javax.persistence.*;import javax.persistence.Entity;import javax.persistence.Table;import java.util.HashSet;import java.util.Set;/** * Created by 17921 on 2017/12/31. */@Entity//将该类声明为一个实体@Table(name = "Students")//指定表的名称@GenericGenerator(name = "stuid",strategy = "native")//创建主键生成策略public class Students { @Id//指定为表的ID @GeneratedValue(generator = "stuid")//指定主键生成策略 @Column(name = "sid")//对应数据表的类名 private Integer sid; @Column(name = "sname") private String sname; @ManyToMany()//多对多 @Cascade(value = {CascadeType.SAVE_UPDATE})//级联 //中间表 中间表的名称 本实体对应中间表的列 另一个实体对应中间表的列 @JoinTable(name = "RStuTe",joinColumns = {@JoinColumn(name = "sid")},inverseJoinColumns = {@JoinColumn(name = "tid")}) private Setteachers=new HashSet (); 省略getset方法}
单测
@Test public void sel(){ Teacher teacher1=new Teacher(); teacher1.setTname("老袁"); Teacher teacher2=new Teacher(); teacher2.setTname("付老师"); Teacher teacher3=new Teacher(); teacher3.setTname("彪哥"); Students students1=new Students(); students1.setSname("老黑"); Students students2=new Students(); students2.setSname("小芮"); Students students3=new Students(); students3.setSname("城余"); students1.getTeachers().add(teacher1); students1.getTeachers().add(teacher2); students2.getTeachers().add(teacher1); students2.getTeachers().add(teacher2); students3.getTeachers().add(teacher1); students3.getTeachers().add(teacher3); Session session = HibernateUtil.getSession(); session.save(students1); session.save(students2); session.save(students3); HibernateUtil.closeSession(); System.out.println("add ok!"); }
结果
student表
teacher表
中间表