博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate(五)注解开发多对多
阅读量:5036 次
发布时间:2019-06-12

本文共 2894 字,大约阅读时间需要 9 分钟。

举例:老师和学生

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 Set
students=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 Set
teachers=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表

中间表

 

转载于:https://www.cnblogs.com/wy0119/p/8168789.html

你可能感兴趣的文章
spring.factories
查看>>
php使用amqplib方式使用rabbitmq
查看>>
打印控件
查看>>
技术团队的目标管理
查看>>
gitlab的介绍
查看>>
利用logging.basicConfig生成文件--中文乱码解决方法
查看>>
matlab新手入门(二)(翻译)
查看>>
Python 编码规范 PEP8
查看>>
mac os 下安装 nmap网络扫描和嗅探工具包
查看>>
python 迷宫问题
查看>>
Ubuntu 14.04 源
查看>>
android界面开发那点事
查看>>
js事件基础
查看>>
玩转CPU Topology
查看>>
jquery实现可以中英切换的导航条
查看>>
ConcurrentHashMap源码解析(JDK1.8)
查看>>
设计模式之中介者模式
查看>>
JavaScript动态清除
查看>>
SVN的忽略和只读使用方法学习记录
查看>>
smartupload 上传与下载(转载)
查看>>