Hibernate多对多映射关系

1.先创建 3个实体类

package com.zking.entity;import java.util.HashSet;
import java.util.Set;public class Menus {private String mid;private String mname;private Set<Roles> sr = new HashSet<Roles>();public Set<Roles> getSr() {return sr;}public void setSr(Set<Roles> sr) {this.sr = sr;}public Menus() {super();// TODO Auto-generated constructor stub}public Menus(String mid, String mname, Set<Roles> sr) {super();this.mid = mid;this.mname = mname;this.sr = sr;}public String getMid() {return mid;}public void setMid(String mid) {this.mid = mid;}public String getMname() {return mname;}public void setMname(String mname) {this.mname = mname;}}
package com.zking.entity;import java.util.HashSet;
import java.util.Set;public class Roles {private String rid;private String rname;private Set<Users> su = new HashSet<Users>();private Set<Menus> sm = new HashSet<Menus>();public Set<Menus> getSm() {return sm;}public void setSm(Set<Menus> sm) {this.sm = sm;}public Set<Users> getSu() {return su;}public Roles(String rid, String rname, Set<Users> su, Set<Menus> sm) {super();this.rid = rid;this.rname = rname;this.su = su;this.sm = sm;}public Roles() {super();// TODO Auto-generated constructor stub}public void setSu(Set<Users> su) {this.su = su;}public String getRid() {return rid;}public void setRid(String rid) {this.rid = rid;}public String getRname() {return rname;}public void setRname(String rname) {this.rname = rname;}}
package com.zking.entity;import java.util.HashSet;
import java.util.Set;public class Users {private String uid;private String uname;private Set<Roles>sr=new HashSet<Roles>();public Set<Roles> getSr() {return sr;}public void setSr(Set<Roles> sr) {this.sr = sr;}public Users() {super();// TODO Auto-generated constructor stub}public Users(String uid, String uname, Set<Roles> sr) {super();this.uid = uid;this.uname = uname;this.sr = sr;}public String getUid() {return uid;}public void setUid(String uid) {this.uid = uid;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}}

2.hibernate.cfg.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration><session-factory><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.password">sasa</property><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/books?characterEncoding=utf-8</property><property name="hibernate.connection.username">root</property><property name="show_sql">true</property><property name="format_sql">true</property><mapping resource="com/zking/entity/Menus.hbm.xml" /><mapping resource="com/zking/entity/Roles.hbm.xml" /><mapping resource="com/zking/entity/Users.hbm.xml" /></session-factory>
</hibernate-configuration>

3.配置Menus.hbm.xml和Roles.hbm.xml和Users.hbm.xml映射文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-9-11 18:49:11 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping><class name="com.zking.entity.Menus" table="MENUS"><id name="mid" type="java.lang.String"><column name="MID" /><generator class="guid" /></id><property name="mname" type="java.lang.String"><column name="MNAME" /></property><set name="sr" table="rolemenus" cascade="sava-update" inverse="false"><key><column name="mid" /></key><many-to-many class="com.zking.entity.Roles" column="rid" /></set></class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-9-11 18:49:11 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping><class name="com.zking.entity.Roles" table="ROLES"><id name="rid" type="java.lang.String"><column name="RID" /><generator class="guid" /></id><property name="rname" type="java.lang.String"><column name="RNAME" /></property><set name="su" table="userroles"><key><column name="rid" /></key><many-to-many class="com.zking.entity.Users" column="uid" /></set><set name="sm" table="rolemenus" cascade="sava-update" inverse="true"><key><column name="rid" /></key><many-to-many class="com.zking.entity.Menus" column="mid" /></set></class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-9-11 18:49:11 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping><class name="com.zking.entity.Users" table="USERS"><id name="uid" type="java.lang.String"><column name="UID" /><generator class="guid" /></id><property name="uname" type="java.lang.String"><column name="UNAME" /></property><set name="sr" cascade="sava-update" table="ROLES" inverse="true"><key><column name="uid" /></key><many-to-many class="com.zking.entity.Roles" column="rid"/></set></class>
</hibernate-mapping>

4 . 测试类

package com.zking.test;import java.util.Set;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.junit.Test;import com.alibaba.fastjson.JSON;
import com.zking.entity.Menus;
import com.zking.entity.Roles;
import com.zking.entity.Users;public class MeU {@Testpublic void add() {Configuration config = new Configuration().configure();SessionFactory sessionFactory = config.buildSessionFactory();Session session = sessionFactory.openSession();// 创建usersUsers u1 = new Users();u1.setUname("admin");// 创建角色Roles r1 = new Roles();r1.setRname("Admin");// 创建菜单Menus m1 = new Menus();m1.setMname("sda");// 互相设置u1.getSr().add(r1);r1.getSu().add(u1);r1.getSm().add(m1);m1.getSr().add(r1);// 保存session.save(u1);session.save(r1);session.save(m1);// 提交session.beginTransaction().commit();// 关闭session.close();sessionFactory.close();}@Testpublic void query() {Configuration config = new Configuration().configure();SessionFactory sessionFactory = config.buildSessionFactory();Session session = sessionFactory.openSession();Users u1 = session.get(Users.class, "cb637e3b-b5bc-11e8-9945-54e1ad416ca2");String str=JSON.toJSONString(u1);System.out.println(str);session.close();sessionFactory.close();}@Testpublic void delete() {Configuration config = new Configuration().configure();SessionFactory sessionFactory = config.buildSessionFactory();Session session = sessionFactory.openSession();Users u1 = session.get(Users.class, "cb637e3b-b5bc-11e8-9945-54e1ad416ca2");Set<Roles> sr = u1.getSr();for (Roles roles : sr) {if (roles.getRname().equals("Admin")) {roles.getSu().remove(u1);}session.update(u1);session.beginTransaction().commit();session.close();sessionFactory.close();}}
}

5、hibernate第六课相关推荐

  1. 第六课.NLP文本分类任务

    第六课目录 NLP文本分类简介 IMDB数据集准备 设置随机种子 下载IMDB并划分数据集 构建词汇表 使用torchtext生成batch WordAveraging 模型定义 加载由glove.6 ...

  2. 【C语言探索之旅】 第一部分第六课:条件表达式

    内容简介 1.课程大纲 2.第一部分第六课:条件表达式 3.第一部分第七课预告:循环语句 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. ...

  3. C#之windows桌面软件第六课:(上集)串口工具实现数据校验、用灯反应设备状态

    C#之windows桌面软件第六课:(上集)串口工具实现数据校验.用灯反应设备状态 using System; using System.Collections.Generic; using Syst ...

  4. Linux云自动化运维第六课

    Linux云自动化运维第六课 第九单元  openssh-server 一.openssh-server 功能:让远程主机可以通过网络访问sshd服务,开始一个安全shell 二.客户端连接方式 ss ...

  5. Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)”

    Coursera公开课笔记: 斯坦福大学机器学习第六课"逻辑回归(Logistic Regression)" 斯坦福大学机器学习第六课"逻辑回归"学习笔记,本次 ...

  6. NeHe OpenGL教程 第三十六课:从渲染到纹理

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  7. 第六课:不要为金钱而工作

    第六课:不要为金钱而工作 1995年,我接受了新家坡一家报纸的采访.一位年轻的女记者准时赴约,于是采访立即开始进行.我们坐在一家豪华酒店的大厅里,喝着咖啡,谈论我此次新加坡之行的目的. 我和畅销书作家 ...

  8. 斯坦福大学机器学习第六课“神经网络的表示(Neural Networks: Representation)”

    斯坦福大学机器学习第六课"神经网络的表示(Neural Networks: Representation)" 本次课程主要包括7部分: 1)  Non-linear hypothe ...

  9. 投资学习网课笔记(part6)--基金第六课

    学习笔记,仅供参考 文章目录 基金第六课 基金的两种交易渠道 场内渠道 场外渠道 场外基金交易规则 场内基金的交易规则 如何分辨场内和场外基金 基金定投 基金第六课 基金的两种交易渠道 场内渠道 使用 ...

最新文章

  1. 独家 | 人工神经网络中发现了人类大脑拥有的多模态神经元(附链接)
  2. 计算机软考网络工程师历年真题,计算机软考《网络工程师》考试历年真题精选(1)...
  3. hcia是什么等级的证书_华为的HCNA,HCNP,HCIE认证证书都有什么用?
  4. 在项目中缓存是如何使用的?
  5. JFinal 1.5 发布,JAVA极速WEB+ORM框架
  6. ios 内存使用陷阱
  7. 如何让背景图片固定在中间,滚动内容图片不动?
  8. CCF NOI1022 平均年龄
  9. 计算机两个基准键用户来定位,键盘与指法基准键位练习
  10. 全球知名 CMS 提供商详细清单
  11. 高频电子线路张肃文第五版详解_高频电子线路第五版张肃文主编学习课件(上).ppt...
  12. Ansys-模态分析基础上的谱分析学习收获
  13. sprint演示会议
  14. 页面http 405错误排查
  15. VLAN,GRE,VXLAN
  16. 训练过程loss突然增大可能的原因
  17. 外部联接(Outer Join)和笛卡尔积(Cartesian Product)
  18. 解决 Xshell6|Xftp6 强制升级问题
  19. 战队口号霸气押韵8字_枪战游戏战队名字大全
  20. WebComponents.exe未安装的解决办法

热门文章

  1. 抖音浏览量的作用是什么?
  2. 【python实现视频解帧并保存到文件夹】
  3. ffmpeg录制桌面,麦克风和系统声音独立成2路音轨
  4. VMware虚拟机安装win10系统教程(巨细)
  5. 申论公文题-总结类-1
  6. OpenGL ES 模拟器
  7. 从zotero文献集中批量导出PDF的方法
  8. ABUMN 公司内资产批量转移
  9. toLocaleString也太好用了吧!(超方便转千分位,中文数字等)
  10. 火车售票管理系统 问题陈述和词汇表