hibernate基于主键的双向多对多的关联映射
来源:互联网 发布:中国未来人口 知乎 编辑:程序博客网 时间:2024/06/07 08:26
1、类Role 和Function类Fole:public class Role {private int id;private String name;private Set<Function> functions = new HashSet<Function>(0);//get…set} Function: public class Function {private int id;private String name;private String code;private String url;private Set<Role> roles = new HashSet<Role>(0);public Function() {// TODO Auto-generated constructor stub}public Function(String name, String code, String url) {super();this.name = name;this.code = code;this.url = url;}//get…set }2、映射文件Role.hbm.xml<hibernate-mapping package="cn.siggy.pojo"><class name="Role"><id name="id"><generator class="native"></generator></id><property name="name"/><!-- 多对多 --><set name="functions" table="role_func" cascade="save-update"><!-- 表示当前类 映射到关系表中的列--><key column="rid"/><!-- 所对应的另一方在关系表中的列 --><many-to-many column="fid" class="Function"/></set></class></hibernate-mapping>function.hbm.xml <hibernate-mapping package="cn.siggy.pojo"><class name="Function"><id name="id"><!-- foreign表示引用外键 --><generator class="native"/></id><property name="name"/><property name="code"/><property name="url"/><set name="roles" table="role_func" inverse="true"><key column="fid"/><many-to-many column="rid" class="Role"/></set></class></hibernate-mapping>3、测试代码@Testpublic void testSave() throws HibernateException, SerialException, SQLException{Session session = null;Transaction tx = null;try{session = HibernateUtil.getSession();tx = session.beginTransaction();Function f1 = new Function("用户管理","user_mag","userAction");Function f2 = new Function("角色管理","role_mag","roleAction");Function f3 = new Function("系统管理","sys_mag","sysAction");Function f4 = new Function("权限管理","prev_mag","prevAction");Role r1 = new Role();r1.setName("admin");r1.getFunctions().add(f1);r1.getFunctions().add(f2);r1.getFunctions().add(f3);r1.getFunctions().add(f4);Role r2 = new Role();r2.setName("vip");r2.getFunctions().add(f1);r2.getFunctions().add(f2);session.save(r1);session.save(r2);tx.commit();}catch (HibernateException e) {if(tx!=null)tx.rollback();e.printStackTrace();throw e;}finally{HibernateUtil.closeSession();}}@Testpublic void testGet(){Session session = null;Transaction tx = null;try{session = HibernateUtil.getSession();tx = session.beginTransaction();Role role = (Role)session.get(Role.class, 1);System.out.println("角色名:"+role.getName());System.out.println("该角色所对应的权限:");for(Iterator<Function> iter = role.getFunctions().iterator();iter.hasNext();){Function func = iter.next();System.out.println(func.getName()+"---"+func.getCode());}//取数据tx.commit();}catch (HibernateException e) {if(tx!=null)tx.rollback();e.printStackTrace();throw e;}finally{HibernateUtil.closeSession();}}
0 0
- hibernate基于主键的双向多对多的关联映射
- Hibernate关联关系配置-----基于连接表的双向一对多/多对一映射配置
- hibernate基于连接表的多对多双向关联
- Hibernate关系映射 --- 一对一实例分析(双向关联,是基于主键的)
- Hibernate多对多双向关联映射
- hibernate映射多对双向关联
- Hibernate关联映射之多对多单/双向关联映射
- Hibernate多对多单向关联和双向关联映射的方法
- 【Hibernate框架】使用链接表的关联映射(一对多/多对一、单/双向映射)
- Hibernate关联映射之--双向多对多关联
- Hibernate 关联映射之---- 多对多双向映射
- 9.Hibernate双向基于主键的1-1映射
- hibernate基于主键的一对一映射(单双向)
- hibernate4-基于主键的单(双)向多对多的关联映射
- Hibernate基于主键单向和双向多对多关系映射
- Hibernate之基于主键映射的一对一关联关系
- Hibernate关联关系映射-----基于连接表的单向多对多映射配置
- 在测试Hibernate的一对多双向关联映射时
- 计算机大端模式和小端模式 内存对齐问题(sizeof)[密码学哈希密码部分参考]
- IOS学习之——用NSUserDefaults保存和读取程序设置
- 1到n的和、阶乘以及阶乘的和
- 项目3-指向学生类的指针
- How to save a gecko from gluing disaster
- hibernate基于主键的双向多对多的关联映射
- 面向对象编程
- Unity IOC注入详细配置(MVC,WebApi)
- FastICA opencv 实现版
- 济南的春天
- 桌面云之虚拟网络
- 第七周项目-用多文件组织多个类的程序2.role.cpp:定义角色类的成员函数
- C++第四次作业
- TestNG 学习总结 - TestNG运行JUnit测试(十三)