4000 hibernate框架多对多-级联保存(十八)
2017-11-20 23:02
381 查看
一、多对多级联保存
多对多级联保存,只要在上一篇的基础上对User.hbm.xml配置稍作修改1.1 配置
多对多级联的时候,一方配置inverser,另一方就配置cascade
1.2 测试程序
@Test public void run2() { Session session = HibernateUtils.getCurrentSession(); Transaction tx = session.beginTransaction(); // 模拟多对多,双向的关联 // 创建用户 User u1 = new User(); u1.setUsername("zhangsan"); User u2 = new User(); u2.setUsername("lisi"); // 创建角色 Role r1 = new Role(); r1.setRname("manager"); Role r2 = new Role(); r2.setRname("actor"); // 关联 u1.getRoles().add(r1); u1.getRoles().add(r2); u2.getRoles().add(r1); session.save(u1); session.save(u2); tx.commit(); }
1.3 运行结果
截图就不贴了(反正和上一篇都一样),看sql吧log4j:WARN No appenders could be found for logger (org.jboss.logging). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Hibernate: insert into sys_user (username, password) values (?, ?) Hibernate: insert into sys_role (rname) values (?) Hibernate: insert into sys_role (rname) values (?) Hibernate: insert into sys_user (username, password) values (?, ?) Hibernate: insert into sys_user_role (uid, rid) values (?, ?) Hibernate: insert into sys_user_role (uid, rid) values (?, ?) Hibernate: insert into sys_user_role (uid, rid) values (?, ?)
二、操作中间表-删除
想要操作中间表,我们只需要操作javabean中的集合2.1 测试程序
/** * 现在:zhangsan用户,有2个角色,manager和actor * 让zhangsan没有actor角色 */ @Test public void run3() { Session session = HibernateUtils.getCurrentSession(); Transaction tx = session.beginTransaction(); // 查询zhangsan用户 User u1 = session.get(User.class, 1L); // 查询角色 Role r2 = session.get(Role.class, 2L); u1.getRoles().remove(r2); tx.commit(); }
2.2 运行结果
看sql:
log4j:WARN No appenders could be found for logger (org.jboss.logging). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Hibernate: select user0_.uid as uid1_1_0_, user0_.username as username2_1_0_, user0_.password as password3_1_0_ from sys_user user0_ where user0_.uid=? Hibernate: select role0_.rid as rid1_0_0_, role0_.rname as rname2_0_0_ from sys_role role0_ where role0_.rid=? Hibernate: select roles0_.uid as uid1_2_0_, roles0_.rid as rid2_2_0_, role1_.rid as rid1_0_1_, role1_.rname as rname2_0_1_ from sys_user_role roles0_ inner join sys_role role1_ on roles0_.rid=role1_.rid where roles0_.uid=? Hibernate: delete from sys_user_role where uid=? and rid=?
三、操作中间表-添加
3.1 测试程序
/** * 现在:zhangsan用户,有1个角色,manager * 让zhangsan添加actor角色 */ @Test public void run4() { Session session = HibernateUtils.getCurrentSession(); Transaction tx = session.beginTransaction(); // 查询zhangsan用户 User u1 = session.get(User.class, 1L); // 查询角色 Role r2 = session.get(Role.class, 2L); u1.getRoles().add(r2); tx.commit(); }
3.2 运行结果
看sql:
log4j:WARN No appenders could be found for logger (org.jboss.logging). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Hibernate: select user0_.uid as uid1_1_0_, user0_.username as username2_1_0_, user0_.password as password3_1_0_ from sys_user user0_ where user0_.uid=? Hibernate: select role0_.rid as rid1_0_0_, role0_.rname as rname2_0_0_ from sys_role role0_ where role0_.rid=? Hibernate: select roles0_.uid as uid1_2_0_, roles0_.rid as rid2_2_0_, role1_.rid as rid1_0_1_, role1_.rname as rname2_0_1_ from sys_user_role roles0_ inner join sys_role role1_ on roles0_.rid=role1_.rid where roles0_.uid=? Hibernate: insert into sys_user_role (uid, rid) values (?, ?)源码下载
相关文章推荐
- hibernate框架一对多级联保存例子(十二)
- Hibernate的学习之路二十一(一对多的级联保存)
- Hibernate 级联保存TransientObjectException object references an unsaved transient instance
- hibernate 一对多 级联 保存修改 删除
- Hibernate的学习之路二十一(一对多的级联保存)
- 框架之hibernate多对一表创建保存
- Hibernate的学习之路二十一(一对多的级联保存)
- Hibernate 级联保存
- hibernate多表级联保存遇到的错误
- java-hibernate框架4(hibernate多表操作,级联操作与延迟加载,多对多关系操作,hibernate缓存技术)
- 【SSH三大框架】Hibernate基础第九篇:cascade关联关系的级联操作
- hibernate的级联保存操作(一对多)
- 关于如何实现在整合struts2和hibernate4框架下实现many-to-one级联数据表在JSP页面中的输出
- hibernate 级联插入(保存父类同时保存子类)
- Hibernate的学习之路二十一(一对多的级联保存)
- hibernate级联保存报错(2)
- hibernate 的级联保存和关联关系
- Hibernate级联保存和更新
- 【极客营】Hibernate完成CRM的联系人的保存操作-技术分析之级联保存
- Hibernate级联保存和更新