hibernate_day03_13_多对多操作(维护第三张表)
来源:互联网 发布:交通数据开放平台 编辑:程序博客网 时间:2024/05/29 03:34
维护第三张表关系
1 用户和角色多对多关系,维护关系通过第三张表维护
2 让某个用户有某个角色
第一步 根据id查询用户和角色
//1 查询lucy和经纪人User lucy = session.get(User.class, 1);Role role = session.get(Role.class, 1);
第二步 把角色放到用户里面
(1)把角色对象放到用户set集合
// 让某个用户有某个角色//让lucy有经纪人角色//1 查询lucy和经纪人User lucy = session.get(User.class, 1);Role role = session.get(Role.class, 1);//2 把角色放到用户的set集合里面lucy.getSetRole().add(role);
//多对多 维护第三张表@Testpublic void testTable(){SessionFactory sessionFactory = null;Session session = null;Transaction tx = null;try{//得到sessionFactorysessionFactory = HibernateUtils.getSessionFactory();//得到sessionsession = sessionFactory.openSession();//开启事务tx = session.beginTransaction();// 让某个用户有某个角色//让lucy有经纪人角色//1 查询lucy和经纪人User lucy = session.get(User.class, 1);Role role = session.get(Role.class, 1);//2 把角色放到用户的set集合里面lucy.getSetRole().add(role);//提交事务tx.commit();}catch(Exception e){//回滚事务tx.rollback();}finally{//关闭session.close();sessionFactory.close();}}
3 让某个用户没有某个角色
第一步 根据id查询用户和角色
第二步 从用户里面把角色去掉
(1)从set集合里面把角色移除
// 让某个用户没有有某个角色User user = session.get(User.class, 2);Role role = session.get(Role.class, 3);//2 从用户里面把角色去掉user.getSetRole().remove(role);
com.hlg.hibernatetest.HibernateManytoMany.java
package com.hlg.hibernatetest;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.junit.Test;import com.hlg.entity.Customer;import com.hlg.entity.LinkMan;import com.hlg.manytomany.Role;import com.hlg.manytomany.User;import com.hlg.utils.HibernateUtils;public class HibernateManytoMany {//多对多 级联保存@Testpublic void testSave(){SessionFactory sessionFactory = null;Session session = null;Transaction tx = null;try{//得到sessionFactorysessionFactory = HibernateUtils.getSessionFactory();//得到sessionsession = sessionFactory.openSession();//开启事务tx = session.beginTransaction();//添加两个用户,为每个用户添加两个角色//1 创建对象User user1 = new User();user1.setUser_name("lucy");user1.setUser_password("123");User user2 = new User();user2.setUser_name("mary");user2.setUser_password("456");Role r1 = new Role();r1.setRole_name("总经理");r1.setRole_memo("总经理");Role r2 = new Role();r2.setRole_name("秘书");r2.setRole_memo("秘书");Role r3 = new Role();r3.setRole_name("保安");r3.setRole_memo("保安");//2 建立关系,把角色放到用户里面// user1 -- r1/r2user1.getSetRole().add(r1);user1.getSetRole().add(r2);// user2 -- r2/r3user2.getSetRole().add(r2);user2.getSetRole().add(r3);//3 保存用户session.save(user1);session.save(user2);//提交事务tx.commit();}catch(Exception e){//回滚事务tx.rollback();}finally{//关闭session.close();sessionFactory.close();}}//多对多 维护第三张表@Testpublic void testTable(){SessionFactory sessionFactory = null;Session session = null;Transaction tx = null;try{//得到sessionFactorysessionFactory = HibernateUtils.getSessionFactory();//得到sessionsession = sessionFactory.openSession();//开启事务tx = session.beginTransaction();// 让某个用户有某个角色//让lucy有经纪人角色//1 查询lucy和经纪人User lucy = session.get(User.class, 1);Role role = session.get(Role.class, 1);//2 把角色放到用户的set集合里面lucy.getSetRole().add(role);//提交事务tx.commit();}catch(Exception e){//回滚事务tx.rollback();}finally{//关闭session.close();sessionFactory.close();}}//多对多 维护第三张表@Testpublic void testTableDelete(){SessionFactory sessionFactory = null;Session session = null;Transaction tx = null;try{//得到sessionFactorysessionFactory = HibernateUtils.getSessionFactory();//得到sessionsession = sessionFactory.openSession();//开启事务tx = session.beginTransaction();// 让某个用户没有有某个角色User user = session.get(User.class, 2);Role role = session.get(Role.class, 3);//2 从用户里面把角色去掉user.getSetRole().remove(role);//提交事务tx.commit();}catch(Exception e){//回滚事务tx.rollback();}finally{//关闭session.close();sessionFactory.close();}}}
阅读全文
0 0
- hibernate_day03_13_多对多操作(维护第三张表)
- Hibernate多对多映射为第三张表manytomany【xml和注解】实例(十七)
- Django-ORM多对多查询 (自定义第三张表&ManyToManyField)
- 操作两张表得到第三张表(分表有对应的实体)
- SQL:连表时对另一张表的多次操作
- JPA中的多对多双向关联、级联操作、关系维护、延迟加载
- Java操作Excel文件的写入(文件中含有多张工作表)
- POI操作Excel:插入多张图片
- 数据库多张表链接操作
- Day40-Hibernate03(多表操作、配置多表关系、级联、放弃外键维护权)
- iOS 分享多张图片到第三方平台
- Hibernate多对多关系自动建表,只建了2张表
- 双向多对多映射(参考张龙老师的)
- 多张图片上传和对图片格式的校验
- 嵌套ajax解决对同一张表在同一时间做新增+查询操作的问题?
- 简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作
- 利用SQL Server 2008完成对基本表的操作 第三章(一)
- 使用Hibernate Annotations 维护多对多关系的心得
- 深入分析java web javac编译原理(其一)
- <context:component-scan base-package="com.a" /> 与<context:annotation-config />
- 使用spring-boot-starter-actuator http://localhost:8080/info无法获取到相应信息
- Java并发学习(六)-深入分析CAS操作
- qt 将图片输出二进制
- hibernate_day03_13_多对多操作(维护第三张表)
- Centos Apache服务安装与配置
- 三极管+电容 实现的心形灯电路
- Linux进程间通信——管道 pipe 详解
- BZOJ 1601 [Usaco2008 Oct]灌水(最小生成树)
- springboot中ehcache的使用
- yarn —— Nodejs包新管理工具
- 1.15使用装饰器改变函数行为
- 4.day11_包和权限修饰符-1