博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java之hibernate之单向的多对多关联映射
阅读量:5038 次
发布时间:2019-06-12

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

这篇 单向的多对多关联映射

1.如何在权限管理中,角色和权限之间的关系就是多对多的关系,表结构为:

2.类结构

Permission.java

public class Permission implements Serializable{    private int id;    private String name;    public Permission() {        // TODO Auto-generated constructor stub    }        public Permission(String name) {        super();        this.name = name;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    }

Role.java

public class Role implements Serializable{    private int id;    private String name;    private Set
permissions=new HashSet
();//这个地方特别容易忘记,,, public Role() { } public Role(String name) { super(); this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set
getPermissions() { return permissions; } public void setPermissions(Set
permissions) { this.permissions = permissions; }}

3.映射文件

Permission.hbm.xml

Role.hbm.xml

4.测试

public class HibernateTest {    /**     * 生成数据库表的工具方法     * */    @Test    public void testCreateDB(){        Configuration cfg = new Configuration().configure();        SchemaExport se = new SchemaExport(cfg);        //第一个参数  是否打印sql脚本        //第二个参数 是否将脚本导出到数据库中执行        se.create(true, true);    }    /**     * 初始化表数据     */    @Test    public void testInit(){        Session session = null;        Transaction tx = null;        try {            session = HibernateUtil.getSession();            tx = session.beginTransaction();            Permission p1 = new Permission("增加用户");            Permission p2 = new Permission("删除用户");            Permission p3 = new Permission("查询用户");            Permission p4 = new Permission("修改用户");                        Role r1 = new Role("管理员");            r1.getPermissions().add(p1);            r1.getPermissions().add(p2);            r1.getPermissions().add(p3);            r1.getPermissions().add(p4);            Role r2 = new Role("vip");            r2.getPermissions().add(p3);            r2.getPermissions().add(p4);                        session.save(p1);            session.save(p2);            session.save(p3);            session.save(p4);            session.save(r1);            session.save(r2);            tx.commit();                    } catch (Exception e) {            if(tx!=null)                tx.rollback();        }finally {            HibernateUtil.close();        }    }    /**     */    @Test    public void testGetData(){        Session session = HibernateUtil.getSession();        Role role = (Role)session.get(Role.class, 1);        System.out.println(role.getId()+"---"+role.getName());        System.out.println("-------------");        for(Permission p:role.getPermissions()){            System.out.println(p.getId()+"---"+p.getName());        }                HibernateUtil.close();    }}

 

转载于:https://www.cnblogs.com/Vincent-yuan/p/11204760.html

你可能感兴趣的文章
HttpRuntime.Cache被清空的DataTable
查看>>
IOS 应用官方接口地址
查看>>
机器学习(周志华西瓜书) 参考答案 总目录
查看>>
八:二叉搜索树的后序遍历
查看>>
android圆角View实现及不同版本号这间的兼容
查看>>
OA项目设计的能力③
查看>>
Cocos2d-x3.0 文件处理
查看>>
全面整理的C++面试题
查看>>
Web前端从入门到精通-9 css简介——盒模型1
查看>>
Activity和Fragment生命周期对比
查看>>
OAuth和OpenID的区别
查看>>
android 分辨率自适应
查看>>
查找 EXC_BAD_ACCESS 问题根源的方法
查看>>
国外媒体推荐的5款当地Passbook通行证制作工具
查看>>
日常报错
查看>>
list-style-type -- 定义列表样式
查看>>
hibernate生成表时,有的表可以生成,有的却不可以 2014-03-21 21:28 244人阅读 ...
查看>>
转:C++到底还能做什么? C++的前景分析
查看>>
在iphone程序中打开word、execl、pdf等文档
查看>>
mysql-1045(28000)错误
查看>>